Java 如何以编程方式关闭消息对话框?
我有一个关于joptionpane的问题Java 如何以编程方式关闭消息对话框?,java,swing,user-interface,joptionpane,Java,Swing,User Interface,Joptionpane,我有一个关于joptionpane的问题 使用JOptionPane.showMessageDialog(…),我们可以创建一个消息对话框。但是如何以编程方式关闭它呢?您总是可以通过获取JOptionPane所持有的任何组件的WindowSenior来获取对JOptionPane的引用,然后在返回的窗口上调用dispose()或setVisible(false)。可以使用SwingUtilities.getWindowAn祖(组件) 例如: import java.awt.Window; imp
使用JOptionPane.showMessageDialog(…),我们可以创建一个消息对话框。但是如何以编程方式关闭它呢?您总是可以通过获取JOptionPane所持有的任何组件的WindowSenior来获取对JOptionPane的引用,然后在返回的窗口上调用
dispose()
或setVisible(false)
。可以使用SwingUtilities.getWindowAn祖(组件)
例如:
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class CloseOptionPane {
@SuppressWarnings("serial")
private static void createAndShowGui() {
final JLabel label = new JLabel();
int timerDelay = 1000;
new Timer(timerDelay , new ActionListener() {
int timeLeft = 5;
@Override
public void actionPerformed(ActionEvent e) {
if (timeLeft > 0) {
label.setText("Closing in " + timeLeft + " seconds");
timeLeft--;
} else {
((Timer)e.getSource()).stop();
Window win = SwingUtilities.getWindowAncestor(label);
win.setVisible(false);
}
}
}){{setInitialDelay(0);}}.start();
JOptionPane.showMessageDialog(null, label);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
有人能从这个例子中扣除分数吗,哈哈,我不这么认为这个精心制作的例子+1:-)谢谢。但关键是在显示JOptionPane之前调用所有必要的代码。使用嵌入式组件作为挂钩-好主意!