Olá pessoal gostaria que me ajudassem com um probleminha vou mostrar os códigos abaixo.
private void TimerAddOnTime(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
count3++;
if(count3 <= 3){
System.out.println("segundos: "+count3);
}else{
jLabel13.setText("");
TimerAdd.stop();
}
}
aqui nesse TimerAdd faço um if para que ao clicar no botao com código abaixo ele inicie um evento que dure 3 segundos mostrando uma msg nesse período, após qro que apague essa msg, porém nao está funcionando da maneira correta, as vezes quando clico da certo, mas qdo clico novamente ou a msg nao apaga mais, ou ela fica piscando e depois some… o que estou fazendo de errado?
abaixo o código do button que clico…
private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
jLabel13.setForeground(Color.red);
jLabel13.setText("Linha adicionada!"); //mensagem que qro que apareça por determinado tempo.
count3 = 0;
TimerAdd.setDelay(1000);
TimerAdd.start();
addLinha();
UltimoMov();
}
valeu pessoal
Ola, não sei se é o seu caso, mas nunca tive muito sucesso com .stop(); da thread, também nunca corri mto atraz disso para ver porque não funciona. pode ser que seja esse seu problema…
humm, pode ser
mas será que se eu tirar o .stop() não irá criar um loop infinito, pois ai ele não vai parar de contar…??
valeu…
Qual é a classe do TimerAdd? Ficou faltando para poder ajudar melhor!
Normalmente, Thread.stop() não é recomendado. Mas, TimerAdd não parece ser Thread…
é da Classe Timer, peguei esses códigos de umas vídeos aulas do neri como se fosse threads… será que to errado?
me da uma mão ai…
valeu!!!
E o pacote?
Quando for falar de uma classe, sempre dê o nome todo, como por exemplo java.util.Date.
Se for a javax.swing.Timer, ela não é uma Thread, ou tanto faz, não tem como saber e nem precisa! Você pode sim chamar um .stop() para parar (não tem nada falando na API).
Porém, não parece ser a swing…
Você pode usar o stop() do timer. O único stop() que é proibido é o da Thread.
será que é esse:
Class org.netbeans.examples.lib.timerbean.Timer
??
valeu!
Baixei esse TimerBean.jar da internet, seguindo exemplos dos Vídeos do Neri…
valeu!!!
Não conheço a classe que você mencionou.
Mas fiz um exemplo do que você está fazendo. (Está tudo junto num grande main, mas é só para utilizar de exemplo hein!) Pode utilizar de exemplo, mas não sei se isso é o melhor jeito de fazer em Swing (não sou acostumado com telas…)
[code]public class Main {
public static void main(String[] args) {
final Timer timer = new Timer("Botão", true); //vamos usar o Timer padrão do Java para fazer as tarefas de fundo
final JLabel lbl1 = new JLabel("Aperte o botão!"); //label com o texto que vai mudar
final JButton btn1 = new JButton("Aperta!"); //botão que dispara a mudança
btn1.addActionListener(new ActionListener() { //adiciona a reação ao botão
@Override
public void actionPerformed(ActionEvent e) {
lbl1.setText("Você apertou!"); //define o texto novo
btn1.setEnabled(false); //desabilita o botão, para a pessoa esperar
btn1.setText("Espera..."); //muda o texto do botão, porque sim
timer.schedule(new TimerTask() { //agenda o "reset": limpa o texto e habilita o botão
@Override
public void run() {
//vamos apagar o texto e habilitar o botão
lbl1.setText("Aperta agora!");
btn1.setText("Aperte!");
btn1.setEnabled(true);
}
}, 3000); //essa chamada faz o TimerTask ser executado em 3 segundos
}
});
//padrão para montar a tela
JPanel jp = new JPanel();
jp.add(lbl1);
jp.add(btn1);
JFrame jf = new JFrame("Demo java.util.Timer");
jf.add(jp);
jf.pack();
jf.setVisible(true);
}
}[/code]
valeu, vou testar e tentar adequar ao meu sistema…
Tópico movido para o fórum de java avançado.
é isso mesmo que tava precisando!!!
valeu, vou adequá-lo agora no meu sistema!!!
avisarei e postarei o código para que outros programadores na mesma situação possam se utilizar desse tópico!
valeu
:thumbup:
Recomendo, porém, que você utilize o guia do Java para SwingWorker se for fazer telas, acho que é mais interessante!
Aí você posta um demo…
bom ficou perfeito…!
muito obrigado pessoal… ficou assim:
private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
final Timer timer = new Timer("Add linha", true);
jLabel13.setText("Nova linha adicionada!");
addLinha();
UltimoMov();
timer.schedule(new TimerTask() {
@Override
public void run() {
jLabel13.setText("");
}
}, 3000);
}