几次尝试后,无模式JDialog框无法显示

时间:2014-09-05 16:46:01

标签: java swing dialog modeless

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

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

}

}

0 个答案:

没有答案