当我按下 GUI 的 "next" 按钮时弹出四个新的 GUI [Java]



Java代码如下所示。当我单击Next按钮(下一个按钮的操作监听器是re类)时,会弹出四个新的gui。我已经确定问题在Person类或getData()方法中。然而,我不能找出确切的问题。谁来帮帮我。注意:getData()方法的目的是从文件中获取数据并将其存储到名为arr的数组中。然而,这些类/方法有些不对劲。

[注意:这个程序纯粹是为了练习。这不是家庭作业之类的。

再次说明,我知道问题出在getData()方法或Person类中,因此不需要查看大部分代码。

import java.awt.*;
import java.util.*;
import java.io.*;
import javax.swing.*;
import java.awt.event.*;
public class RectangleProgram extends JFrame
{
    private JLabel Title, LastName, FirstName, LawnSize, TotalCost, RunningTotal; 
    private JTextField Field1, Field2, Field3, Field4, Field5;
    private JButton Next, Quit; 
  public class Person extends RectangleProgram
  {
     String firstname; String lastname; int z; 
     public Person(String l, String m, int e)
     {
        firstname=l; lastname=m; z=e; 
     }
  }  
  public static Person [] arr=new Person [100]; // store all the data in this array!
  public void getData()
  {
  try{
     Scanner sc=new Scanner(new File("data.txt"));
     int r=sc.nextInt();
     for (int g=0; g<r; g++)
     {
      String firstnamez, lastnamez; int rm;
      firstnamez=sc.next();
      lastnamez=sc.next();rm=sc.nextInt();
      Person xe=new Person(firstnamez, lastnamez, rm); 
      arr[g]=xe;
     }
  }
  catch(FileNotFoundException fnfe) { 
        System.out.println(fnfe.getMessage());
    } 
  }
    private re x= new re(); private me xx=new me(); 
    public RectangleProgram()
    {
        setSize(250,200); 
        setTitle("Sample1"); 
        setDefaultCloseOperation(EXIT_ON_CLOSE);  
        Container pane=getContentPane();
        pane.setLayout(new FlowLayout(FlowLayout.CENTER, 5,2));
        Title=new JLabel("Green and Grow Mowing Company"); 
        LastName=new JLabel("Last Name: "); 
        FirstName=new JLabel("First Name: ");
        LawnSize=new JLabel("Lawn Size: "); 
        TotalCost=new JLabel("Total Cost: "); 
        RunningTotal=new JLabel ("Running Total: ");
        Field1= new JTextField (10); Field2= new JTextField(10); Field3= new JTextField(10); Field4= new JTextField(10); Field5= new JTextField(10); 
        Next= new JButton("Next"); Quit= new JButton("Quit"); 
        Next.addActionListener(x); Quit.addActionListener(xx); 
        pane.add(Title); pane.add(LastName); pane.add(Field1); pane.add(FirstName); 
        pane.add(Field2); pane.add(LawnSize); pane.add(Field3); pane.add(TotalCost); pane.add(Field4);
        pane.add(RunningTotal); pane.add(Field5); 
        pane.add(Next); pane.add(Quit); 
        setVisible(true);
    }
    public class re implements ActionListener
    {
        public void actionPerformed (ActionEvent e) 
     { 
        //Field2.setText(""+3);  
        getData();
        }
  }
    public class me implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            System.exit(0); 
        }
    }
    public static void main(String[] args)
    {
        RectangleProgram x= new RectangleProgram(); 
    }


}

您的类Person扩展RectangleProgram。所以,如果你在GetData()的for循环中创建一个新的Person,你就是在创建一个RectangleProgram的新实例,它创建了GUI。只要从Person中删除extends RectangleProgram就可以解决您的问题。

最新更新