Mudar cor de um botão com tempo

1. Mudar cor de um botão com tempo

Vitor Ismar da Silva
vitorismar

(usa Ubuntu)

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


  


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

wellington
wellingtonsr

(usa Slackware)

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

Vitor Ismar da Silva
vitorismar

(usa Ubuntu)

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

Perfil removido
removido

(usa Nenhuma)

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

cr0n
_di0

(usa FreeBSD)

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

Vitor Ismar da Silva
vitorismar

(usa Ubuntu)

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...







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts