我在扩展JFrame的类中有一个ActionListener。单击按钮时,我需要设置在Main类中创建的JFrame扩展对象的可见性。在此示例中,单击该按钮将使具有该按钮的现有对象变为不可见,并且它将使另一个JFrame对象变为可见。
ActionListener位于一个JFrame类中,该对象在Main类中创建。如何从JFrame类中的ActionListener在Main类中运行该特定对象的方法?
我已经有了一个setVisibility方法,但我不知道如何指示ActionListener在另一个类中存在的对象上运行此方法。
在大班:
Object1 jFrameObj1 = new Object1();
Object2 jFrameObj2 = new Object2();
在Object1类(内部动作侦听器)中:
if(event.getSource() == button){
jFrameObj1.setVisible(false);
jFrameObj2.setVisible(true);
}
答案 0 :(得分:0)
首先,您应该尊重Java命名约定,并为类和变量选择更好的名称。如果要在对象上调用方法,则需要对此对象的引用。所以main方法只需要将第二帧的引用传递给第一帧:
Object2 frame2 = new Object2();
Object1 frame1 = new Object1(frame2);
然后在Object1类中:
private Object2 frameToDisplayWhenButtonIsClicked;
public Object2(frameToDisplayWhenButtonIsClicked) {
this.frameToDisplayWhenButtonIsClicked;
}
...
public void actionPerformed(ActionEvent e) {
setVisible(false);
frameToDisplayWhenButtonIsClicked.setVisible(true);
}