0

我创建了一个类来显示无模式对话框。我想警告用户一些事情,但我不能阻止他们访问应用程序。

在下面的测试程序中,对话框只会被创建 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;
    }

}

}
4

0 回答 0