Help em Evento

11 respostas
B

Diz ae galera… primeiro veja minha situacao depois informo minha duvida
Tenho 1 combobox e 2 jtextfield
no 1 [color=orange]combo[/color] setor um valor do tipo int
no 1 [color=red]jtextfield1[/color] informo um valor do tipo double
e no 2 [color=blue]jtextfield2[/color] ele faz o calculo do [color=orange]combo[/color] + o [color=red]jtextfield1[/color], o [color=red]jtextfield1[/color] pega o valor do [color=orange]combo[/color] e da o resultado no [color=blue]jtextfield2[/color].

Ai vem minha duvida estando com o focu no [color=red]jtextfield1[/color] (aonde informo o valor), como faco para mim em quanto ir digitando o valor no componente [color=red]jtextfield1[/color] ele ir auto jogando o resultado no [color=blue]jtextfield2[/color]! qual evento devo usar para isso, e alguem tem algum modelo de alguma coisa que faca isso ? muito obrigado pela atencao de todos vcs!!! [color=orange]combo[/color]

11 Respostas

P

Procure pelo evento CHANGE.

B

propertychange?!?!?!?

B

up

lina

Oi,

Você poderá usar thread para isso.

Da uma olhada (fiz um exemplo com 3 textfield):

import javax.swing.JFrame;
import javax.swing.JTextField;

public class Testando extends JFrame
{
	JTextField text, text_1, text_2;
	
	Thread lo_thread = null;
	
	public Testando()
	{
		setLayout(null);
		setSize(500,500);
		
		Window();
	}
	
	public void Window()
	{
		text = new JTextField();
		text.setBounds(5,10,100,25);
		getContentPane().add(text);
		
		text_1 = new JTextField();
		text_1.setBounds(5,50,100,25);
		getContentPane().add(text_1);
		
		text_2 = new JTextField();
		text_2.setBounds(5,100,100,25);
		getContentPane().add(text_2);
		
		lo_thread	=	ThreadSoma();
		lo_thread.start();
	}
	
	private final
        Thread			ThreadSoma()
        {
        	return
        	(
        		new Thread
        		(
        			new Runnable()
        			{
        				public
        				void			run()
        				{
        					while	(!lo_thread.isInterrupted()) 
        					{
        						if	(
        								text.getText().length() > 0
        								&&
        								text_1.getText().length() > 0
        							)
        						{
        							int
        							value = Integer.parseInt(text.getText());
        							
        							double
        							value_1 = Double.parseDouble(text_1.getText());
        							
        							double
        							soma = value+value_1;
        							
        							text_2.setText(""+soma);
        						}
        						else
        						{
        							//
        							// Aguarda 1 segundo e verifica novamente.
        							// Isso servirá para não consumir muito a memoria do SO
                						synchronized (lo_thread)
        							{
        								try
									{
        									lo_thread.wait(1000);
									}
									catch (InterruptedException e)
									{
										e.printStackTrace();
									}
        							}
        						}
        					}
        				}
        			}
        		)
        	);
        }
	
	public static void main(String args[])
	{
		new Testando().setVisible(true);;
	}
}

Tchauzin!

M

Mas me tira uma duvida usar thread em uma aplicacao n deixa o sistema muito lento? ou afeta coisa minima em um sistema? obrigada

lina

Oi,

Thread não deixa o sistema lento e sim a utilização da thread de forma errada.

Ela não é nada mais do que um processo que ficará em wait esperando ser executado. Depois de executado voltará a ficar em wait e ainda pode-se definir suas prioridades de processo com o comando setPriority().

Tchauzin!

B

Entendi deu certo, mas para mim deixar a thread parada quando n estiver sendo usada devo fazer isso thread.stop()? dei uma pesquisada e parece que stop() esta depreciado o q faco para matar a thread ou deixar parada ate que necessite ser usada denovo? e otra coisa para que serve o setPriority()? configurar a prioridade? como assim? obrigada por sua atencao amiga!

lina

Oi,

Para deixar a thread parada, você deverá utilizar o método wait(); sem nenhum argumento:

syncronized(thread) { try { lo_thread.wait(); } catch (InterruptedException e) { } }

e quando necessitar acorda-la, utilize o notify() no lugar de wait(). (igual ao exemplo acima).

Amanhã pela manhã postarei a utilização da prioridade! estou sem tempo agora!

Tchauzin!

maior_abandonado

bom…apenas uma consideração, não sou nenhum perito em threads mais acho que é bom se saber disso, não só a thread não deixa (não por si só) um programa mais lento, como também pode fazer com que ele responda mais rápido e/ou evitar que se trave a tela por que está fazendo uma operação demorada…

vamos a um exemplo, supondo que vai-se ler um arquivo bem grande, se for feito na thread principal, por onde foi criada a janela, a janela não vai responder enquanto aquela thread estiver ocupada fazendo outra coisa, no caso lendo o arquivo grande. Por isso operações demoradas devem ser executadas em outra thread, para não deixar a thread da janela ocupada (e aliais gosto de colocar uma ProgressBar nesses casos por causa da usabilidade mais ai ja é outro assunto).

Caso se deseje fazer isso, em certos casos é possivel colocar mais de uma thread para se fazer varias coisas, o que seria mais rapido do que fazer tudo na mesma thread, uma de cada vez (fazer assim usaria um pouco mais de recursos do computador, porém termina as tarefas mais rapido).

quanto a parte de prioridade, se a lina me permite a intromissão de ja responde, essa prioridade da thread corresponde a chance que ela vai ter de executar por mais tempo na CPU, ou seja, quanto maior a prioridade, maior será a “preferencia” que a CPU dará a essa thread em relação a outras, disponibilizando maior tempo para essa thread em relação a outras.

essa thread será um número entre 0 e 10, quanto maior for esse inteiro, maior será a preferencia dada a essa thread.

lina

Oi,

Perfeito! Obrigada.

Tchauzin!

B

obrigado aos 2, mataro minha duvida tanks!! :***

Criado 17 de setembro de 2009
Ultima resposta 22 de set. de 2009
Respostas 11
Participantes 5