eu tenho um JOptionPane e quero que ele apareça e em torno de 2 segundos ele se feche sozinho…
Acho que eu posso fazer isso com thread mais eu não consegui implementar aqui.
Outra coisa tambem é que eu queria que aparecesse somente a mensagem, sem nenhum botão, eu consegui somente mostrar a mensagem com um botão ok, como no exemplo abaixo, mais eu queria sem nenhum botão.
Você vai ter quer implementar um diálogo seu (JDialog) que vai se fechar (método dispose) depois da quantidade de segundos desejada.
Vc vai precisar criar uma Thread (ou um Timer) para fazer isso.
[]'s
W
wesleypc
Olá davidbuzatto,
você poderia por favor postar um exemplo para que eu possa me basear?
Segue o exemplo. Fiz usando classes internas privadas para facilitar colocar no mesmo arquivo.
Você deve separar as classes para organizar melhor seu código e permitir reutilização.
/** * * @author David Buzatto */publicclassTeste{/** * @param args the command line arguments */publicstaticvoidmain(String[]args){newTeste().testar();}publicvoidtestar(){Janelaj=newJanela();j.setVisible(true);}privateclassJanelaextendsJFrame{publicJanela(){setSize(300,300);setTitle("Janela");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JButtonb=newJButton("Abrir...");b.addActionListener(newTratador(this));add(b);}privateclassTratadorimplementsActionListener{privateFramepai;publicTratador(Framepai){this.pai=pai;}@OverridepublicvoidactionPerformed(ActionEvente){Dialogod=newDialogo(pai,true,"Fechando...",2);d.setVisible(true);}}}privateclassDialogoextendsJDialog{publicDialogo(Framedono,booleanmodal,Stringtitulo,finalintsegundos){super(dono,modal);setSize(100,100);setTitle(titulo);setDefaultCloseOperation(DISPOSE_ON_CLOSE);addWindowListener(newWindowAdapter(){@OverridepublicvoidwindowOpened(WindowEvente){newThread(newRunnable(){@Overridepublicvoidrun(){try{Thread.sleep(segundos+1000);dispose();}catch(InterruptedExceptionexc){exc.printStackTrace();}}}).start();}});}}}
[]'s
Mstanguine
Eu estava com essa mesma dúvida, consegui resolver seguindo esse Tópico.
No caso ai, o método .show() foi depreciado, nesse caso use:
public class T {
public static void main(String[] args) {
JOptionPane pane = new JOptionPane("Teste");
final JDialog dialog = pane.createDialog(null, "test");
dialog.setModal(true);
Timer timer = new Timer(10 * 1000, new ActionListener() {
public void actionPerformed(ActionEvent ev) {
dialog.dispose();
System.out.println("dispose");
}
});
timer.setRepeats(false);
timer.start();
dialog.setVisible(true); //Muda pra esse método
timer.stop();
System.out.println("out...");
System.exit(0);
}
}