2012-05-07 70 views
2

我一直在根據Swing創建我的應用時遇到了一些問題。我有它由一個主要的JFrame:JButton需要在JDialog後點擊兩次

  1. JMenu的含有一個JButton和JLabel

的JButton與ActionListener的鏈接

  • JPanel的。點擊JMenu(MenuListener)以某種形式出現一個JDialog。問題是,當JDialog被關閉時(我用dispose()或showVisible(false)來做它並沒有什麼區別),我需要在它第一次觸發前兩次單擊JButton。從現在開始,它通常只需點擊一下即可。

    每次JDialog出現時,都會出現問題。

    PS。 JDialog被設置爲模式,以JFrame作爲父項。

  • +4

    我不確定我們如何根據所提供的信息爲您提供幫助。您的代碼中存在一個錯誤,在我們開始能夠幫助您之前,需要通過調試將其隔離。 –

    +3

    爲了更快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

    回答

    3

    這聽起來像一個焦點問題。

    第一次單擊將焦點恢復到應用程序,第二次單擊按鈕。通常情況下,當JDialog具有錯誤的父級並且無法返回焦點時,我已經看到了這一點。

    1

    謝謝你的回答。

    我已經考慮發佈一些代碼,但它涉及4個類,所以會很長。

    我以前也嘗試過關注焦點,但沒有任何幫助。有趣的是:如果我通過new myDialog.showVisible(true)顯示JDialog,它的行爲就像我所描述的那樣。但是,如果使用結構是這樣的:

    SwingUtilities.invokeLater(new Runnable() { 
    
         public void run() { 
          new JDialog.setVisible(true); 
         } 
        }); 
    

    它正常關閉和父幀不需要響應之前被點擊,但另一方面顯示的對話框需要如此。另外,我不明白,打開對話框後,文本字段中,我可以正常寫入,但點擊它的一些按鈕,我必須點擊一次對話框,只有第二次和下一次點擊行爲就像我想。

    PS。在第二個包含的示例中關閉對話框不會改變任何內容。

    相關問題