我有一个 JPanel,它以与 JOptionPane.showMessageDialog(...)
非常相似的方式实例化另一个 JPanel。但我不使用此选项,因为我想更改大小、消息、按钮位置和更多内容。但最终的实用程序必须相同,一旦选择就返回所选选项。问题是,我不想轮询可能初始化为 null 的属性,直到它从 actionPerformed(...)
方法更改为止。相反,我曾想过以某种方式使用CompletionService
,但我不知道如何准确地做到这一点。我该如何定义它?因为我猜必须在 getSelectedOption()
方法中选择 Future
,但它必须在 actionPerformed(...)
中生成> 一。如何做到这一点?
最佳答案
最简单的选择是将面板嵌入模态 JDialog 中 setModal(true)
。
这样你就可以有一个静态方法来初始化你的面板和其他任何东西,调用setVisible(true)
(由于对话框是模态的,所以会阻塞)。然后,一旦用户单击“确定”按钮(关闭对话框),您就可以检索所选选项。
public static MyOption showMyDialog() {
final JDialog myDialog = new JDialog();
myDialog.add(myPanel);
myDialog.setModal(true);
myDialog.setVisible(true); // blocker since the dialog is modal
return myPanel.getSelectedOption();
}
关于Java - 在 JPanel 中获取选择的选项而不进行轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12892613/