我正在尝试创建一个在关闭之前保持打开的JDialog,并且不允许用户关闭它。
import java.awt.Dialog.ModalityType;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
public class MessageClass {
private JDialog waitDialog;
public MessageClass(String string_,String title_) {
JOptionPane msg=new JOptionPane(string_,
JOptionPane.INFORMATION_MESSAGE,
JOptionPane.DEFAULT_OPTION,null,new Object[]{},null);
waitDialog=msg.createDialog(title_);
}
public void openWait() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
waitMessage();
}
});
}
private void waitMessage() {
waitDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
waitDialog.setLocationRelativeTo(GUI.getInstance().frame);
waitDialog.setModalityType(ModalityType.DOCUMENT_MODAL);
waitDialog.pack();
waitDialog.setVisible(true);
}
public void closeWait() {
waitDialog.dispose();
}
}
这个课我有3个问题,我无法理解。第一个是在调用dispose之前不会显示窗格。第二个是它不会处理可能与第一个问题相关的问题(我没有尝试过两次调用dispose)。第三个是窗格不显示文本,而是空白。
我像这样设置了这个类:
MessageClass msg=new MessageClass("Information text","Title");
msg.openWait();
// a bunch of code
msg.closeWait();
有人能发现我做错了吗? TIA。
答案 0 :(得分:0)
你在哪里运行openWait()和closeWait()?如果它们在EventDispatchThread上,则阻塞该线程,直到closeWait()完成执行,因此对话框没有机会绘制自己。