以下是代码段,我想通过将其父级设为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)
作为第一个参数?
答案 0 :(得分:3)
这并不重要。
作为处理的一部分,JOptionPane
在将参数传递给基础getWindowForComponent
之前调用JDialog
(稍微更一般)。
至于隐含的问题“无论如何有什么不同?”,这与模态有关。在这里,我建议你阅读Oracle's guide to modality。
JOptionPane
使用JDialog
的默认模态类型,它是上面指南中的应用程序模式。这意味着该对话框将阻止对应用程序中所有窗口的输入,除了将对话框作为父的窗口外。因此,如果您打开2个具有相同父级的对话框 - 您遇到麻烦,但如果其中一个让另一个作为父级 - 则该子级具有控件并且一旦关闭就将它们传输到父级。