我创建了一个类来显示无模式对话框。我想警告用户某些事情,但我不能阻止他们访问该应用程序。
在下面的测试程序中,对话框只会被创建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;
}
}
}