我有一个带有两个输入文本字段的非模态对话框,其中显示了带有OK和CANCEL按钮的JOptionPane。我将显示如下对话框。
JTextField field_1 = new JTextField("Field 1");
JTextField field_2 = new JTextField("Field 2");
Object[] inputField = new Object[] { "Input 1", field_1,
"Input_2", field_2 };
JOptionPane optionPane = new JOptionPane(inputField,
JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
JDialog dialog = optionPane.createDialog(null, "Input Dialog");
dialog.setModal(false);
dialog.setVisible(true);
如何从对话框中获取返回值?意味着我需要获得是否按下确定或取消按钮。怎么能实现这个目标?
答案 0 :(得分:1)
Using getValue()会告诉您对话框是如何关闭的。由于它是非模态的,因此您需要在对话框关闭后获取该信息,可能使用等待对话框关闭的Thread
来返回信息。您没有提供有关该信息需求的任何详细信息,因此使用其他Thread
可能不是最适合您的解决方案。
答案 1 :(得分:1)
一种方法是向ComponentListener
添加dialog
并听取其变化的可见性,
dialog.addComponentListener(new ComponentListener() {
@Override
public void componentResized(ComponentEvent e) { }
@Override
public void componentMoved(ComponentEvent e) { }
@Override
public void componentShown(ComponentEvent e) { }
@Override
public void componentHidden(ComponentEvent e) {
if ((int) optionPane.getValue()
== JOptionPane.YES_OPTION) {
// do YES stuff...
} else if ((int) optionPane.getValue()
== JOptionPane.CANCEL_OPTION) {
// do CANCEL stuff...
} else {
throw new IllegalStateException(
"Unexpected Option");
}
}
});
注意:您应该使用ComponentAdapter
代替;我正在展示整个界面以供说明。