2013-07-14 53 views
0

後禁用的JFrame我有這個2的JFrame類:啓用/隱藏其他的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); 
     } 
    } 

正如你可以看到,當我點擊button1Frame1被禁用,Frame2 obj2創建。

  1. 首先,我想知道我所做的是禁用/離焦一個父母JFrame以顯示另一個焦點上的正確方法。
  2. 然後我只需要在啓用Frame2之後啓用Frame1,類似obj1.setEnabled(true)。我怎樣才能做到這一點?
+2

請參閱[使用多個JFrames,好/壞實踐?](http://stackoverflow.com/a/9554657/418556)(使一個框架成爲模態對話框,或者只是使用'CardLayout')。 –

+0

好的,謝謝,我將Frame2更改爲「public class Dialog2 extends javax.swing.JDialog {}」現在我怎麼能達到我的目的?我怎樣才能讓Frame1父對象的Dialog2子? – Frank

+1

請編輯您的問題以包含反映您對[*如何製作對話框*]的理解的[sscce](http://sscce.org/)(http://docs.oracle.com/javase/tutorial/uiswing /components/dialog.html)。 – trashgod

回答

0

所有你所要做的就是創建一流幀的裁判權在它裏面:

public 1_class_name obj; 
//call the second class method getobj(o) 
getobj(obj); 

,然後創建一個方法,並在第二類框架裁判:

1_class_name a; 
public void getobj(1_class_name o){ 
    a=o; 
} 

你做到這一點之後,創建第二類框架監聽器:

 public void windowClosing(WindowEvent e) { 
      a.setEnabled(true); 
      dispose(); 
     } 
    }; 
    addWindowListener(exitListener); 

它爲我工作,我希望它也能爲你工作;)