我有这2个JFrame类:
public class Frame1 extends javax.swing.JFrame {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
private JButton button1;
button1 = new JButton("Open Frame2");
private void button1ActionPerformed(java.awt.event.ActionEvent evt) {
this.setEnabled(false); // disable Frame1 until Frame2 is showing
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Frame2 obj2 = new Frame2 ();
obj2.setVisible(true);
}
});
}
}
public class Frame2 extends javax.swing.JFrame {
setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
public Frame2 () {
this.setVisible(false);
}
Frame1 obj1 = new Frame1 ();
private JButton button2;
button2 = new JButton("Hide Frame2 and go to Frame1");
private void button2ActionPerformed(java.awt.event.ActionEvent evt) {
this.setVisible(false);
}
}
正如您所看到的,当我点击button1
Frame1
时,系统会停用并创建Frame2 obj2
。
JFrame
以显示另一个父焦点。Frame1
之后启用Frame2
,例如obj1.setEnabled(true)
。我该怎么办?答案 0 :(得分:0)
您所要做的就是在其中创建第一类框架的参考:
public 1_class_name obj;
//call the second class method getobj(o)
getobj(obj);
然后在第二个类框架中创建一个方法和一个ref:
1_class_name a;
public void getobj(1_class_name o){
a=o;
}
执行此操作后,您将在第二个类框架中创建一个侦听器:
public void windowClosing(WindowEvent e) {
a.setEnabled(true);
dispose();
}
};
addWindowListener(exitListener);
它对我有用,我希望它也适合你;)