在两个不同的动作监听器中,当满足某些条件时,将显示一个对话框。如果两个动作监听器都需要显示对话框,则同时显示2个对话框。但我希望他们一个接一个地展示。
简化代码:
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JOptionPane.showMessageDialog(getTopLevelAncestor(), "dialog 1");
}
});
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JOptionPane.showMessageDialog(getTopLevelAncestor(), "dialog 2");
}
});这两个"SwingUtilities.invokeLater“调用位于不同的类中。
发布于 2010-11-30 15:56:47
创建一个跟踪它的类;这个类将包含一个要显示的对话框队列;当一个对话框关闭时,将显示队列中的第一个并从队列中删除。当另一个类需要显示一个对话框时,如果队列是空的,或者插入到队列中,它会立即显示出来。
发布于 2010-11-30 16:10:24
这与对话框的形式有关。有一篇关于这个主题http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/modality/的非常有用的文章。对话框具有不同的通道类型和不同的优先级。您可以通过创建优先级较低的第二个对话框来解决问题:
JOptionPane pane = new JOptionPane("dialog 2", JOptionPane.INFORMATION_MESSAGE);
JDialog dialog = pane.createDialog("Message");
dialog.setModalityType(Dialog.ModalityType.DOCUMENT_MODAL);
dialog.setVisible(true);希望这能有所帮助。
发布于 2011-08-06 04:43:39
如果你需要invokeAndWait(),这个方法会一直等到Runnable完成。
或者在您的情况下,当第一个对话框关闭时。
https://stackoverflow.com/questions/4311203
复制相似问题