2014-09-27 6 views
2

Есть ли способ сделать окно popUp внутри приложения или апплета для автоматического закрытия через определенный промежуток времени (например, 5 секунд)?JAVA: как автоматически закрыть окно popUp?


Я нашел решение:

Для тех, которые могли бы искать то же самое:

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

Может быть полезным: http://stackoverflow.com/questions/1306868/can-i-set-a-timer-on-a-java-swing-jdialog-box-to-close-after-a-number -of-millise –

+0

Большое вам спасибо за эту ссылку, в ней содержится ответ, который я искал;) –

ответ

1

Чтобы автоматически закрыть всплывающее окно, вам необходимо установить новый поток и установить в нем таймер.

код Try ниже

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(); 
} 
} 

Вы вызываете выше класса из другого кадра, как этот диалог PopUp

FrmPopUpInfo frm = new FrmPopUpInfo(); 

исчезнет в 5с.

Смежные вопросы