Como ligar uma variável a um textField com evento?

7 respostas
A

É possível fazer com que um JTextField atualize o seu compo com uma variável “x” toda vez que esta variável é modificada? Tipo um evento que fique “escutando” a variável e escreve ela no jtextfield toda vez que ela é atualizada!!

Até

7 Respostas

S

Bom, não sei exatamente a resposta, mas enquanto espera para adiantar o seu lado tente pesquisar sobre Listeners, acredito que seja este o caminho.

tivrfoa

sim :slight_smile:

como o amigo falou utilize KeyListener

A

tivrfoa,

acho que vc entendeu errado! Atualizar a variável usando o keylistner do textfield é fácil! O problema é o contrário! Atualizar o textfield utilizando um listner para a variável! Pois não existe listner para as variáveis.

Até

tivrfoa

pod cre

public void seMudouAtualizaPorra(String s) { // supondo que a variável é String Oo
	x = s;
	textField.setText(x);
}

é isso ou tbm ñ?

A

Olá

Agradeço a todos pelas respostas.

Eu “consegui” fazer o que eu queria com o código abaixo. Entretanto não usei eventos.

package variaveis;

import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.EventObject;

import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;

public class X {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private double var;
	JTextField imprimirVar = new JTextField();

	public X(double inicialValue) {
		var=inicialValue;		
		// TODO Auto-generated constructor stub
	}

	public void setX(double x)
	{
		var = x;
		atualizarMostrador(var);
	}
	
	private void atualizarMostrador(double x)
	{
		imprimirVar.setText(String.valueOf(x));
	}
	
	public double getX()
	{
		return var;
	}
	
	public void setImprimirVariavel(JTextField textField)
	{
		imprimirVar = textField;
	}
	public JTextField getImmprimirVar()
	{
		return imprimirVar;
	}

}





package variaveis;

import java.awt.Dimension;
import java.awt.GradientPaint;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

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

public class Teste extends JFrame{

	
	JTextField inserirValorDeX;
	
	X x;
	
	public Teste() {
		// TODO Auto-generated constructor stub
		
		inserirValorDeX = getInserirValorDeX();
		
		x = new X(0);
		
		desenhar();
	}
	
	private JTextField getValorDeX()
	{
		JTextField textField = new JTextField();
		
		return textField;
	}
	
	private JTextField getInserirValorDeX()
	{
		JTextField textField = new JTextField();
		
		textField.addKeyListener(new KeyListener(){

			public void keyPressed(KeyEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			public void keyReleased(KeyEvent e) {
				// TODO Auto-generated method stub
				JTextField j = (JTextField) e.getSource();
				x.setX(Double.parseDouble(j.getText()));
			}

			public void keyTyped(KeyEvent arg0) {
				// TODO Auto-generated method stub
				
			}
			
		});
		
		return textField;
	}
	
	public void desenhar()
	{
		setLayout(new GridLayout());
		add(inserirValorDeX);
		add(x.getImmprimirVar());
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		setSize(new Dimension(300,300));
		setTitle("Alterar Valor de X por evento");
	}
	
	public static void main(String[] args) {
		Teste t = new Teste();
	}
}

Na verdade o que eu queria era uma forma automática de atualizar os campos que mostram algumas variáveis que manipulo para o usuário. Entretanto fazer com que todas as vezes que esta variável sofra alguma alteração ela seja atualizada no textfield é um pouco “trabalhosa” e às vezes pode aparecer alguns bugs, ou seja, lugares em que eu atualizo a variável e me esqueço de atualiza-la.

Obviamente programadores experientes já devem fazer algo parecido (ou não), mas pra mim que estou começando foi algo novo que me ocorreu!

Até.

rissato

Vc precisa utilizar uma api de “binding”. Pra fazer isso que vc está querendo, vc precisa “amarrar” uma variável em um controle na tela.

Nunca trabalhei com binding em swing, mas dá uma “googlada” sobre “swing binding” que com certeza vc encontrará o caminho…

valew!

tivrfoa

se vc quer que aconteça outra coisa qndo altera o valor de uma variável, é só alterar o valor em um método como eu mostrei.

public void updateVarX(String s) { // supondo q x seja uma String x = s; doOtherThing(); }

alguém desminta-me, please

Criado 5 de março de 2009
Ultima resposta 6 de mar. de 2009
Respostas 7
Participantes 4