2014-09-12 58 views
0

假設當我點擊j1上的「X」按鈕時,兩個JDialogs,j1和j2和我需要關閉j2。同時關閉兩個JDialogs

我試圖在j1上實現WindowListener,並在windowClosing()windowClosed()方法中使用j2.dispose(),但它不起作用。

是否可以在「X」按鈕上放置一個actionPerformed例如?或者有可能使用windowListener來做到這一點,以及如何?

預先感謝您。

+0

也許[此帖](http://stackoverflow.com/questions/7652821/java-listener-on-dialog-close)可以提供幫助。 – BlackDwarf 2014-09-12 20:23:33

+1

'我試圖在j1上實現WindowListener,並且在windowClosing()和windowClosed()方法中使用了j2.dispose(),但它不起作用。「這是正確的方法。該代碼應該在windowClosing()中實現。如果您需要更多幫助(在閱讀完已提供的建議之後),請發佈您的[SSCCE](http://sscce.org/)以說明問題。 – camickr 2014-09-12 20:42:41

回答

3

我的猜測是,你忘了添加WindowListener。將System.out.println放入您的WindowListener方法中,查看它們是否實際被調用。

這裏是你描述的工作示例:

public class Test { 

    public static void main(String[] args) { 
     final JDialog jd1 = new JDialog((JFrame) null, "Dialog 1", false); 
     jd1.setVisible(true); 

     JDialog jd2 = new JDialog((JFrame) null, "Dialog 2", false); 
     jd2.setVisible(true); 
     jd2.addWindowListener(new WindowAdapter() { 

      @Override 
      public void windowClosing(WindowEvent we) { 
       jd1.dispose(); 
      } 
     }); 
    } 
} 
+0

謝謝你的回答。它工作,現在我將閱讀有關WindowAdapter,因爲它對我來說是新的。 – user3610008 2014-09-12 20:52:08

2

是否可以在「X」按鈕上放置actionPerformed例如?

看看我在這個帖子答案:Associate predefined action to close button Java JDialog

+0

我想你的解決方案有兩個,謝謝你,我會記住,以防萬一我將來需要它。但現在我將使用Whiskeyspider的解決方案,因爲它不那麼複雜。 – user3610008 2014-09-12 20:53:33