Pular para o conteúdo

Mudar cor de um botão com tempo

Responder tópico
  • Denunciar
  • Indicar

1. Mudar cor de um botão com tempo

Enviado em 08/10/2012 - 13:40h

Olá a todos, sou iniciante em Java, estou fazendo um trabalho pra Faculdade em que eu gostaria que um botão (swing), ao ser clicado, saisse da cor default e mudasse para uma cor qualquer depois de 2 segundos, porém, quando eu clico no botão, primeiro ele espera os 2 segundos e depois ele muda a cor do botão...
Ficaria grato se alguém pudesse me ajudar...
Segue abaixo uma versão reduzida do meu fonte...

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Teste extends JFrame implements ActionListener{
private JPanel pnlBotao, pnlContainer;
private JButton btnInicio;

Teste(){
pnlBotao = new JPanel(new GridLayout(1,1,5,5));
pnlBotao.setSize(140,140);
btnInicio = new JButton( "Começar" );
btnInicio.addActionListener( this);

pnlBotao.add(btnInicio);
pnlContainer = new JPanel(new BorderLayout());
pnlContainer.add("Center", pnlBotao);
getContentPane().add(pnlContainer);
setSize(140,140);
setVisible(true);
}

public void actionPerformed(ActionEvent e){
try{
if (e.getSource()==btnInicio){
btnInicio.setBackground(new java.awt.Color(102,153,255));
// minha dúvida é neste trecho, primeiro ele "pausa" para depois mudar a cor do botão
// eu queria que fosse alterada antes da pausa...
Thread.sleep(2000);
btnInicio.setText("OK");
}

}
catch (Exception erro) {
JOptionPane.showMessageDialog(null, "Erro! " + erro);
}
}

public static void main(String[] args){
Teste t= new Teste();
}
}

Responder tópico

2. Re: Mudar cor de um botão com tempo

Enviado em 08/10/2012 - 14:16h

Pra mudar direto tire essa linha: "Thread.sleep(2000);"

3. Re: Mudar cor de um botão com tempo

Enviado em 08/10/2012 - 14:18h

wellingtonsr escreveu:

Pra mudar direto tire essa linha: "Thread.sleep(2000);"
Obrigado pela resposta, mas eu não quero que ele mude direto, eu quero que depois que eu clicar no botão ele espere os 2 segundos e ai sim mude a cor....

4. Re: Mudar cor de um botão com tempo

Enviado em 08/10/2012 - 14:41h

Não tem muito o que se fazer sem o resto do programa, mas eu acho que o problema é com Thread

5. Re: Mudar cor de um botão com tempo

Enviado em 08/10/2012 - 16:23h

você está invocando sleep na EDT (Event Dispatching Thread) do próprio swing, quando você chama o sleep, a thread faz sua UI(User Interface) congelar, ficando livre somente depois de 2 segundos. Acho que o ideal nesse caso seria usar Swing Timer.

6. Re: Mudar cor de um botão com tempo

Enviado em 09/10/2012 - 08:56h

_di0 escreveu:

você está invocando sleep na EDT (Event Dispatching Thread) do próprio swing, quando você chama o sleep, a thread faz sua UI(User Interface) congelar, ficando livre somente depois de 2 segundos. Acho que o ideal nesse caso seria usar Swing Timer.
Muito Obrigado,estarei pesquisando sobre isto...

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder