Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有内部类的Java GUI操作侦听器_Java_Swing_User Interface_Frame_Actionlistener - Fatal编程技术网

具有内部类的Java GUI操作侦听器

具有内部类的Java GUI操作侦听器,java,swing,user-interface,frame,actionlistener,Java,Swing,User Interface,Frame,Actionlistener,我正在为我的一个班的一个实验室工作,需要一些帮助 我正在构建一个公寓综合图形用户界面,它将有一个菜单系统和许多不同类之间的单独功能。该综合体由租户、员工和一家银行组成 目前,我的整个项目都在控制台之外运行,但现在我被指派将其转换为GUI界面 这是我的GUI主要功能中的代码: ApartmentComplex mavPlace = new ApartmentComplex(); //creates a new apartment complex object mavPlace.aptB

我正在为我的一个班的一个实验室工作,需要一些帮助

我正在构建一个公寓综合图形用户界面,它将有一个菜单系统和许多不同类之间的单独功能。该综合体由租户、员工和一家银行组成

目前,我的整个项目都在控制台之外运行,但现在我被指派将其转换为GUI界面

这是我的GUI主要功能中的代码:

   ApartmentComplex mavPlace = new ApartmentComplex(); //creates a new apartment complex object
   mavPlace.aptBank.setBalance(ANNUAL_BUDGET); //sets the apartment bank budget
   readFile(mavPlace); 

   mavPlace.goThroughAndAssignValues(mavPlace);
   JFrame frame = new JFrame("My First GUI");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setSize(300,300);
   JButton button = new JButton("Press");
   frame.getContentPane().add(button); // Adds Button to content pane of frame
   frame.setVisible(true);

   button.addActionListener(new ActionListener()
            {
                    public void actionPerformed(ActionEvent e)
                    {
                        //Execute when button is pressed                          
                        mavPlace.lease(mavPlace);
                    }
            });
使用action listener,当按下按钮时,它应该调用我的另一个类中的lease函数。我希望它从那里返回到控制台输出。 netbeans给我的错误是:从内部类访问局部变量mavPlace;需要宣布为最终决定 .... 现在我去做了一个最终的减刑,只是为了看看发生了什么,它起了作用,但我不能编辑我复杂的细节,所以这是不可能的

我能做什么


谢谢大家!

让您的类实现ActionListener接口,并使用它添加一个action listener ie

button.addActionListener(this);

如果使用匿名类,则应将类中使用的参数设置为当前块中的最终类型或成员专用变量

class MyGUI
{
  ApartmentComplex mavPlace;
  public MyGUI()
  {
   JFrame frame = new JFrame("My First GUI");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setSize(300,300);
   JButton button = new JButton("Press");
   frame.getContentPane().add(button); // Adds Button to content pane of frame
   frame.setVisible(true);
   mavPlace = new ApartmentComplex(); //creates a new apartment complex object
   mavPlace.aptBank.setBalance(ANNUAL_BUDGET); //sets the apartment bank budget
   readFile(mavPlace); 

   mavPlace.goThroughAndAssignValues(mavPlace);
   button.addActionListener(new ActionListener()
            {
                    public void actionPerformed(ActionEvent e)
                    {
                        //Execute when button is pressed                          
                        mavPlace.lease(mavPlace);
                    }
            });



  }


}
我认为你应该重新考虑你的课程结构。
如果你告诉我们全部目的,你会得到更好的答案

final ApartmentComplex temp=mavPlace
,并在动作侦听器中使用
temp
代替
mavPlace