0

我有一个 JPanel,它以与JOptionPane.showMessageDialog(...). 但我不使用此选项,因为我想更改大小、消息、按钮位置以及更多内容。但最终的实用程序必须相同,一旦选择就返回所选选项。问题是我不想轮询一个可能被初始化为 null 的属性,直到它从actionPerformed(...)方法中改变。相反,我曾想过以某种方式使用 a CompletionService,但我无法思考如何准确地做到这一点。我该如何定义它?因为我猜Future必须在一个getSelectedOption()方法中选择它,但它必须在一个方法中生成 actionPerformed(...)。这该怎么做?

4

2 回答 2

1

最简单的选项是将您的面板嵌入到 JDialog 中,它是 modal setModal(true)

这样你就可以有一个静态方法来初始化你的面板和任何东西,调用setVisible(true)(阻塞,因为对话框是模态的)。然后,一旦用户单击 Ok 按钮(关闭对话框),您就可以检索选定的选项。

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();
}
于 2012-10-15T09:26:46.303 回答
0

您可以编写 JOptionPane 的子类并进行所需的布局,但仍然使用 return 方法。

于 2012-10-15T09:23:32.480 回答