有没有办法让应用程序或Applet中的popUp窗口在一段时间后自动关闭(例如5秒)?
我找到了解决方案:
对于任何可能正在寻找同样的人:
public static void main(String[] args) {
JFrame f = new JFrame();
final JDialog dialog = new JDialog(f, "Test", true);
Timer timer = new Timer(2000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
dialog.setVisible(false);
dialog.dispose();
}
});
timer.setRepeats(false);
timer.start();
dialog.setVisible(true); // if modal, application will pause here
System.out.println("Dialog closed");
}
感谢您的回答。
答案 0 :(得分:1)
为了自动关闭弹出窗口,您必须设置新线程并在其中设置计时器。
尝试以下代码
public class FrmPopUpInfo extends JDialog{
public boolean isCancel = false;
private String trackHeader = "Pop Up is:";
private final String message;
public FrmPopUpInfo(String message){
this.message = message;
initComponents();
}
private void initComponents() {
Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();// size of the screen
Insets toolHeight = Toolkit.getDefaultToolkit().getScreenInsets(getGraphicsConfiguration());// height of the task bar
setLocation(scrSize.width - 275, scrSize.height - toolHeight.bottom - 120);
ImageIcon image;
setSize(225,120);
setLayout(null);
setUndecorated(true);
setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;
JLabel headingLabel = new JLabel(trackHeader + message);
image = new ImageIcon(Toolkit.getDefaultToolkit().getImage(FrmPopUpInfo.class.getResource("/images/yourImage.jpg")));
headingLabel .setIcon(image);
headingLabel.setOpaque(false);
add(headingLabel, constraints);
constraints.gridx++;
constraints.weightx = 0f;
constraints.weighty = 0f;
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.NORTH;
JButton cloesButton = new JButton(new AbstractAction("x") {
@Override
public void actionPerformed(final ActionEvent e) {
dispose();
}
});
cloesButton.setMargin(new Insets(1, 4, 1, 4));
cloesButton.setFocusable(false);
add(cloesButton, constraints);
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
setVisible(true);
setAlwaysOnTop(true);
new Thread(){
@Override
public void run() {
try {
Thread.sleep(5000); // time after which pop up will be disappeared.
dispose();
} catch (InterruptedException e) {
e.printStackTrace();
}
};
}.start();
}
}
你可以从其他框架调用上面的类
FrmPopUpInfo frm = new FrmPopUpInfo();
PopUp对话框将在5秒后消失。