我创建了一个类来显示无模式对话框。我想警告用户一些事情,但我不能阻止他们访问应用程序。
在下面的测试程序中,对话框只会被创建 3 次(我在我的应用程序中看到相同的问题),然后它会停止。不知道为什么。如果我删除行 dialog.setModalityType(Dialog.ModalityType.MODELESS); ,一切正常。另一件事是,如果我在 show() 方法中设置断点,它将到达断点,如果我继续,它将再显示该框 3 次并停止。这段代码有问题吗?对这些东西没有太多经验,但我认为 while() 循环引起了问题,但我能弄清楚为什么?
public class JavaApplication6 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
while (true) {
showAlertBox();
}
}
public static void showAlertBox() {
AlertBox box = new AlertBox("Test" , "HI THERE");
int result = box.show();
if (result == JOptionPane.YES_OPTION) {
System.out.println("YES SELECTED");
}
}
}
public class AlertBox {
JOptionPane pane;
JDialog dialog;
Object selectedValue;
String mTitle;
public AlertBox(String title, String alertText) {
pane = new JOptionPane(alertText, JOptionPane.WARNING_MESSAGE, JOptionPane.YES_NO_OPTION, null, null, null);
mTitle=title;
}
public int show() {
dialog = pane.createDialog(null, mTitle );
dialog.setModalityType(Dialog.ModalityType.MODELESS);
dialog.setVisible(true);
selectedValue = pane.getValue();
while (selectedValue == JOptionPane.UNINITIALIZED_VALUE) {
//wait
selectedValue = pane.getValue();
}
if(selectedValue instanceof Integer) {
return ((Integer)selectedValue).intValue();
} else {
return JOptionPane.CLOSED_OPTION;
}
}
}