我有一个非模式对话框,其中有两个输入文本字段,其中 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);
如何从对话框中获取返回值?意味着我需要知道是否按下了“确定”或“取消”按钮。如何才能实现这一目标?
最佳答案
一种方法是向对话框
添加一个ComponentListener
并监听其可见性的变化,
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
来代替;我展示了整个界面以供说明。
关于java - JOptionpane + JDialog(非模态)获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21263965/