自定义 JDialog - 查看是否按下了 OK
Custom JDialog - Find out if OK was presed
我有一个自定义的 JDialog,是为了解决一些本地问题(RTL 等)
直到现在,它只有一个 "ok" 选项,
我现在必须修改它也有一个取消按钮。
我做到了。
现在唯一的问题是 我不知道如何从中获取输入,是按下确定还是取消?
请帮忙。
这是我的代码:
public MyDialog(String title,boolean withCancelButton) {
String message = "<html><b><font color=\"#8F0000\" size=\"7\" face=\"Ariel\">" + title + "</font></p></html>";
JOptionPane pane = new JOptionPane(message, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
JDialog dialog = pane.createDialog(null, title);
dialog.setVisible(true);
dialog.dispose();
if (pane.getOptionType() == 1)
okWasPressed = true;
else
okWasPressed = false;
}
问题是 pane.getOptionType() 总是 return“2”,所以它可能是选项计数之类的。
我怎样才能得到实际的选择?
谢谢,
戴夫
通常可以这样做:
int response = JOptionPane.showConfirmDialog(parent, "message", "title", JOptionPane.OK_CANCEL_OPTION);
System.out.println(response);
最简单的选择是使用标准功能,如下所示:
int opt = JOptionPane.showOptionDialog(jf, "Do you really want to?", "Confirm",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null);
if(opt == JOptionPane.OK_OPTION) {
System.out.println("Ok then!");
} else {
System.out.println("Didn't think so.");
}
如果您真的想使用自己的对话框,如示例中所示,您应该使用 getValue() 来检查按下的内容:
JOptionPane optionPane = new JOptionPane("Do you really want to?",
JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
JDialog dialog = optionPane.createDialog(jf, "Confirm");
dialog.setVisible(true);
dialog.dispose();
int opt = (int) optionPane.getValue();
if(opt == JOptionPane.OK_OPTION) {
System.out.println("Ok then!");
} else {
System.out.println("Didn't think so.");
}
询问JavaDocs中描述的...
JOptionPane pane = new JOptionPane(arguments);
pane.set.Xxxx(...); // Configure
JDialog dialog = pane.createDialog(parentComponent, title);
dialog.show();
Object selectedValue = pane.getValue();
if(selectedValue == null)
return CLOSED_OPTION;
//If there is not an array of option buttons:
if(options == null) {
if(selectedValue instanceof Integer)
return ((Integer)selectedValue).intValue();
return CLOSED_OPTION;
}
//If there is an array of option buttons:
for(int counter = 0, maxCounter = options.length;
counter < maxCounter; counter++) {
if(options[counter].equals(selectedValue))
return counter;
}
return CLOSED_OPTION;
您应该可以使用 JOptionPane#getValue()
但是,除非您有非常紧迫的理由这样做,否则您应该使用 static
工厂方法之一。有关详细信息,请参阅 How to Make Dialogs
我有一个自定义的 JDialog,是为了解决一些本地问题(RTL 等) 直到现在,它只有一个 "ok" 选项, 我现在必须修改它也有一个取消按钮。 我做到了。 现在唯一的问题是 我不知道如何从中获取输入,是按下确定还是取消?
请帮忙。
这是我的代码:
public MyDialog(String title,boolean withCancelButton) {
String message = "<html><b><font color=\"#8F0000\" size=\"7\" face=\"Ariel\">" + title + "</font></p></html>";
JOptionPane pane = new JOptionPane(message, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
JDialog dialog = pane.createDialog(null, title);
dialog.setVisible(true);
dialog.dispose();
if (pane.getOptionType() == 1)
okWasPressed = true;
else
okWasPressed = false;
}
问题是 pane.getOptionType() 总是 return“2”,所以它可能是选项计数之类的。
我怎样才能得到实际的选择?
谢谢, 戴夫
通常可以这样做:
int response = JOptionPane.showConfirmDialog(parent, "message", "title", JOptionPane.OK_CANCEL_OPTION);
System.out.println(response);
最简单的选择是使用标准功能,如下所示:
int opt = JOptionPane.showOptionDialog(jf, "Do you really want to?", "Confirm",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null);
if(opt == JOptionPane.OK_OPTION) {
System.out.println("Ok then!");
} else {
System.out.println("Didn't think so.");
}
如果您真的想使用自己的对话框,如示例中所示,您应该使用 getValue() 来检查按下的内容:
JOptionPane optionPane = new JOptionPane("Do you really want to?",
JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
JDialog dialog = optionPane.createDialog(jf, "Confirm");
dialog.setVisible(true);
dialog.dispose();
int opt = (int) optionPane.getValue();
if(opt == JOptionPane.OK_OPTION) {
System.out.println("Ok then!");
} else {
System.out.println("Didn't think so.");
}
询问JavaDocs中描述的...
JOptionPane pane = new JOptionPane(arguments);
pane.set.Xxxx(...); // Configure
JDialog dialog = pane.createDialog(parentComponent, title);
dialog.show();
Object selectedValue = pane.getValue();
if(selectedValue == null)
return CLOSED_OPTION;
//If there is not an array of option buttons:
if(options == null) {
if(selectedValue instanceof Integer)
return ((Integer)selectedValue).intValue();
return CLOSED_OPTION;
}
//If there is an array of option buttons:
for(int counter = 0, maxCounter = options.length;
counter < maxCounter; counter++) {
if(options[counter].equals(selectedValue))
return counter;
}
return CLOSED_OPTION;
您应该可以使用 JOptionPane#getValue()
但是,除非您有非常紧迫的理由这样做,否则您应该使用 static
工厂方法之一。有关详细信息,请参阅 How to Make Dialogs