How to close message dialog programmatically?

前端 未结 1 1423
鱼传尺愫
鱼传尺愫 2020-12-06 11:30

I have a question about joptionpane.

Using JOptionPane.showMessageDialog(...), we can create a message dialog. But how to close it programmatically?

相关标签:
1条回答
  • You could always get a reference to the JOptionPane by getting the WindowAncestor of any component it's holding, and then call dispose() or setVisible(false) on the Window returned. The Window can be obtained by using SwingUtilities.getWindowAncestor(component)

    For example:

    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();
             }
          });
       }
    }
    
    0 讨论(0)
提交回复
热议问题