我正在为我的一个课程开设LAB,我需要一些帮助。
我正在构建一个公寓综合体GUI,它将具有菜单系统和许多不同类之间的单独功能。由租户,员工和银行组成的综合体。
我目前整个项目都在控制台之外工作,但现在我被指派将其转换为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);
}
});
使用动作监听器,当按下按钮时,它应该在我的另一个类中调用一个租赁功能。从那里我想要它回到控制台输出。 错误netbeans给我的是:局部变量mavPlace是从内部类中访问的;需要宣布最终 ....现在我去做了最后的决定只是为了看看发生了什么并且它有效,但我无法编辑我的复杂细节,所以这是不可能的。
我该怎么办?
谢谢!
答案 0 :(得分:1)
让您的类实现ActionListener接口并使用它来添加动作侦听器,即
button.addActionListener(this);
http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html
答案 1 :(得分:0)
如果使用匿名类,则应将类中使用的参数设置为当前块中的最终类型或成员私有变量。
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);
}
});
}
}
我认为您应该重新考虑您的计划结构。 如果你告诉我们完整的目的,你会得到更好的答案。