Java JOptionPane.createDialog和OK\u CANCEL\u选项
我有一个自定义对话框,从用户那里收集两个字符串。在创建对话框时,我对选项类型使用OK\u CANCEL\u选项。除用户单击“取消”或关闭对话框外,所有提示均有效,其效果与单击“确定”按钮相同 如何处理取消和关闭事件 下面是我要说的代码:Java JOptionPane.createDialog和OK\u CANCEL\u选项,java,swing,jdialog,joptionpane,Java,Swing,Jdialog,Joptionpane,我有一个自定义对话框,从用户那里收集两个字符串。在创建对话框时,我对选项类型使用OK\u CANCEL\u选项。除用户单击“取消”或关闭对话框外,所有提示均有效,其效果与单击“确定”按钮相同 如何处理取消和关闭事件 下面是我要说的代码: JTextField topicTitle = new JTextField(); JTextField topicDesc = new JTextField(); Object[] message = {"Title: ", topicTitle, "Desc
JTextField topicTitle = new JTextField();
JTextField topicDesc = new JTextField();
Object[] message = {"Title: ", topicTitle, "Description: ", topicDesc};
JOptionPane pane = new JOptionPane(message, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
JDialog getTopicDialog = pane.createDialog(null, "New Topic");
getTopicDialog.setVisible(true);
// Do something here when OK is pressed but just dispose when cancel is pressed.
在你的情况下返回
JOptionPane.OK_OPTION
JOptionPane.CLOSED_OPTION
JOptionPane.CANCEL_OPTION
简单的示例我认为更好的选择是使用以下代码
JTextField topicTitle = new JTextField();
JTextField topicDesc = new JTextField();
Object[] message = {"Title: ", topicTitle, "Description: ", topicDesc};
Object[] options = { "Yes", "No" };
int n = JOptionPane.showOptionDialog(new JFrame(),
message, "",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
options, options[1]);
if(n == JOptionPane.OK_OPTION){ // Afirmative
//....
}
if(n == JOptionPane.NO_OPTION){ // negative
//....
}
if(n == JOptionPane.CLOSED_OPTION){ // closed the dialog
//....
}
通过使用showOptionDialog方法,您将根据用户的操作得到一个结果,因此您无需执行任何其他操作,只需解释该结果请参见。从“示例”点开始阅读文本:
以下是我的完整示例:
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class Main {
public static void main(String[] args) {
JTextField topicTitle = new JTextField();
JTextField topicDesc = new JTextField();
Object[] message = {"Title: ", topicTitle, "Description: ", topicDesc};
JOptionPane pane = new JOptionPane(message,
JOptionPane.PLAIN_MESSAGE,
JOptionPane.YES_NO_CANCEL_OPTION);
JDialog getTopicDialog = pane.createDialog(null, "New Topic");
getTopicDialog.setVisible(true);
Object selectedValue = pane.getValue();
int n = -1;
if(selectedValue == null)
n = JOptionPane.CLOSED_OPTION;
else
n = Integer.parseInt(selectedValue.toString());
if (n == JOptionPane.YES_OPTION){
System.out.println("Yes");
} else if (n == JOptionPane.NO_OPTION){
System.out.println("No");
} else if (n == JOptionPane.CANCEL_OPTION){
System.out.println("Cancel");
} else if (n == JOptionPane.CLOSED_OPTION){
System.out.println("Close");
}
}
}
非常感谢各位。使用showOptionDialog代替createDialog是可行的。您能解释一下您的解决方案吗?我认为它不起作用。需要那个窗格。getValue+处理n,thx