Can I set a timer on a Java Swing JDialog box to close after a number of milliseconds

后端 未结 3 973
离开以前
离开以前 2020-12-09 20:01

Hi is it possible to create a Java Swing JDialog box (or an alternative Swing object type), that I can use to alert the user of a certain event and then automat

3条回答
  •  南方客
    南方客 (楼主)
    2020-12-09 20:49

    This solution is based on oxbow_lakes', but it uses a javax.swing.Timer, which is intended for this type of thing. It always executes its code on the event dispatch thread. This is important to avoid subtle but nasty bugs

    import javax.swing.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class Test {
    
        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");
        }
    }
    

提交回复
热议问题