Olá galera, sou novo por aqui e já estou trazendo problemas rsrsrsrsrsrss.
É o seguinte estou fazendo um programinha que eu quero adicionar uma contagem regressiva no setText do JButton.
Tipo assim, quando o usuario clicar no botão, o mesmo botão fica inativo e começa uma contagem regressiva no setText do botão, até a contagem chegar a zero, ae o botão fica ativo novamente. Consequi criar a contagem mas não consigo colocar no botão.
Quando clicko no botão ele trava, a acontagem acontece mas eu não a vejo.
Desde já agradeço.
Crie um javax.swing.Timer que faça isso. Não use Thread.sleep que só irá travar seu botão.
Um exemplo boboca. Note que não uso nenhum Thread.sleep.
package guj;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
public class TesteBotao extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JLabel lbl = null;
private JPanel pnlButtons = null;
private JButton btnContagemRegressiva = null;
private JPanel getJPanel() {
if (pnlButtons == null) {
pnlButtons = new JPanel();
pnlButtons.setLayout(new FlowLayout());
pnlButtons.add(getJButton(), null);
}
return pnlButtons;
}
private JButton getJButton() {
if (btnContagemRegressiva == null) {
btnContagemRegressiva = new JButton();
btnContagemRegressiva.setText("Botão");
btnContagemRegressiva
.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
btnContagemRegressiva.setEnabled(false);
count = 10;
btnContagemRegressiva.setText("" + count);
timer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
count = count - 1;
btnContagemRegressiva.setText("" + count);
if (count <= 0) {
timer.stop();
btnContagemRegressiva.setEnabled(true);
}
}
});
timer.start();
}
});
}
return btnContagemRegressiva;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
TesteBotao thisClass = new TesteBotao();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
public TesteBotao() {
super();
initialize();
}
private void initialize() {
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("Teste de Contagem Regressiva");
}
private JPanel getJContentPane() {
if (jContentPane == null) {
lbl = new JLabel();
lbl.setText("Contagem Regressiva");
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(lbl, BorderLayout.NORTH);
jContentPane.add(getJPanel(), BorderLayout.SOUTH);
}
return jContentPane;
}
private int count;
private Timer timer;
}
O BOBÃO Muito Obrigado deu tudo certo!!!
Um Abraço.