' JOptionPane.showConfirmDialog()中的第一个参数是什么?

时间:2014-12-02 18:44:25

标签: java swing

以下是代码段,我想通过将其父级设为JOptionPane.showConfirmDialog()来使用resultsTablePanel显示对话框:

public class SearchResultsTablePanel extends JPanel{...}

public class DefaultSearchListener{

   private SearchResultsTablePanel resultsTablePanel = null;

   public void f(X x) {
       int response = JOptionPane.showConfirmDialog(
                resultsTablePanel,
                "hai",
                "Warning", JOptionPane.YES_NO_OPTION,
                JOptionPane.QUESTION_MESSAGE);

        if (response == JOptionPane.NO_OPTION) {
            // do something
        } else if (response == JOptionPane.YES_OPTION) {
            // do something
        } else if (response == JOptionPane.CLOSED_OPTION) {
            // do something
        }
   }
}

我的问题:

对于java swing api JOptionPane.showConfirmDialog(), 我是否需要将resultsTablePanel作为第一个参数传递?

我是否需要传递JOptionPane.getframeforcomponent(resultsTablePanel)作为第一个参数?

1 个答案:

答案 0 :(得分:3)

这并不重要。

作为处理的一部分,JOptionPane在将参数传递给基础getWindowForComponent之前调用JDialog(稍微更一般)。

至于隐含的问题“无论如何有什么不同?”,这与模态有关。在这里,我建议你阅读Oracle's guide to modality

JOptionPane使用JDialog的默认模态类型,它是上面指南中的应用程序模式。这意味着该对话框将阻止对应用程序中所有窗口的输入,除了将对话框作为父的窗口外。因此,如果您打开2个具有相同父级的对话框 - 您遇到麻烦,但如果其中一个让另一个作为父级 - 则该子级具有控件并且一旦关闭就将它们传输到父级。