隐藏另一个JFrame后启用/禁用JFrame

时间:2013-07-14 12:44:05

标签: java swing jframe

我有这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

  1. 首先,我要知道我所做的是否是一种正确的方法来禁用/散焦一个父JFrame以显示另一个父焦点。
  2. 然后我只需在隐藏Frame1之后启用Frame2,例如obj1.setEnabled(true)。我该怎么办?

1 个答案:

答案 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);

它对我有用,我希望它也适合你;)