Thread & JLabel Swing

Bem Pessoal Hoje presciso do seguite problema!

Presciso que um Componente JLabel Receba Constante atualização referente a hora que é coleta apartir de uma metodo em outra classe,
qual o melhor jeito para realizar essa tarefa constantemente ?
Threads?

Agradeço desde Já.

Acredito que vc pode criar uma thread que possa ir modificando esse componente.

Parece Ser o Melhor jeito né?!

Tem alguma ideia , Sugere Algo?

Att
’[]

Fiz aqui rápidinho , qualquer coisa modifique para melhor o satisfazer.


public static void main(String[] args) {

		SeuFrame seuFrm = new SeuFrame();
		Thread atualiza  = new Thread(new Clock(seuFrm.getLblTime()), "teste");
		atualiza.start();


	}



class Clock implements Runnable{

	private Thread atual ;
	private JLabel lbl ;
	public Clock(JLabel lbl) {
		this.lbl = lbl ;
		atual = new Thread(this, "label");



	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		SimpleDateFormat fmt = new SimpleDateFormat("HH:mm:ss");
		while(true){
			lbl.setText(fmt.format(new Date()));
			try {
				Thread.sleep(1000);
				lbl.repaint();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

}

Sendo ma

Eu acho melhor criar esta outra classe e implementar um listener nela.

Ai na sua classe principal onde tem o label, vc poderia colocar um evento no listener da classe que despara o evento de tempo em tempo.

Assim uma coisa não fica presa na outra, vou tentar codificar aqui hehe

Vou usar uma unica referência de listener (não um array) para simplificar a vida.

dai é só chamar o metodo dispara listener na sua classe quando tiver que alertar as outras aplicações

class DisparadorDeTempo
{

    ActionListener listener;

    DisparadorDeTempo(ActionListener listener)
    {
        this.listener = listener;
    }

    private void disparaListener(String texto)
    {
        listener.actionPerformed(new ActionEvent(texto, 0, "performed"));
    }

}

Depois no seu principal ao instanciar o seu disparador é só vc criar o evento e setar o label.

        DisparadorDeTempo disparadorDeTempo = new DisparadorDeTempo(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				label.setText(e.getSource.toString());
			}
		});

isso ai é para explicar o funcionamento dos listener.

O mais adequado é vc riar seu listener e o seu evento já com os tipos certos de construtor e tipos de variaveis.

Mas já é um começo.