Duvida JOptionPane.showConfirmDialog

6 respostas
W

Olá galera,

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.

JOptionPane.showConfirmDialog(null,“Mensagem”, “Titulo”, JOptionPane.CLOSED_OPTION);

Alguem ai poderia me ajudar?

Grato.

6 Respostas

davidbuzatto

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

Olá davidbuzatto,

você poderia por favor postar um exemplo para que eu possa me basear?

Vlw desde já.

S

Espero que ajude…

public void confirmDialog()
    {
        Thread t = new Thread(new Runnable()
        {
            public void run()
            {
                try
                {
                    JFrame frame = new JFrame();
                    frame.add(new JPanel().add(new JLabel("Mensagem")));
                    frame.setTitle("Titulo");
                    frame.setBounds(400, 200, 400, 200);
                    frame.setVisible(true);
                    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
                    Thread.sleep(2000);
                    frame.dispose();
                }
                catch(Exception ex){}
            }
        });
        t.start();
    }
davidbuzatto

Oi Wesley,

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
 */
public class Teste {

    /**
     * @param args the command line arguments
     */
    public static void main( String[] args ) {
        new Teste().testar();
    }
    
    public void testar() {
        Janela j = new Janela();
        j.setVisible( true );
    }
    
    private class Janela extends JFrame {
        
        public Janela() {
            
            setSize( 300, 300 );
            setTitle( "Janela" );
            setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
            
            JButton b = new JButton( "Abrir..." );
            b.addActionListener( new Tratador( this ) );
            add( b );
            
        }
        
        private class Tratador implements ActionListener {
            
            private Frame pai;
            
            public Tratador( Frame pai ) {
                this.pai = pai;
            }
            
            @Override
            public void actionPerformed( ActionEvent e ) {
                Dialogo d = new Dialogo( pai, true, "Fechando...", 2 );
                d.setVisible( true );
            }
            
        }
        
    }
    
    private class Dialogo extends JDialog {
        
        public Dialogo( Frame dono, boolean modal, String titulo, final int segundos ) {
            
            super( dono, modal );
            
            setSize( 100, 100 );
            setTitle( titulo );
            setDefaultCloseOperation( DISPOSE_ON_CLOSE );
            
            addWindowListener( new WindowAdapter() {

                @Override
                public void windowOpened( WindowEvent e ) {
                    new Thread( new Runnable() {

                        @Override
                        public void run() {
                            try {
                                Thread.sleep( segundos + 1000 );
                                dispose();
                            } catch ( InterruptedException exc ) {
                                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); } }

W

Poh galera, vlw, era isso mesmo que eu queria…

Brigadão pela força ai.

Abrass

Criado 7 de novembro de 2011
Ultima resposta 8 de nov. de 2011
Respostas 6
Participantes 4