ActionPerformed

como faço pra pegar um texto de uma TextField e guardar numa string? :roll:

Primeiro uma sugestao:
-Use o CodeCompletation do Eclipse. Ex.: new JTextField(). e pressione CTRL+BARRA pra mostrar os gets… vc vai encontrar tudo que precisa lah…
-Use a busca…

A resposta:

JTextField txtField = new JTextField();
String texto = txtField.getText();

é assim mesmo

é Só usar o metodo getString():

String str = ""+text.getString();

Nossa… Dps que li o texto nem lembrava do ActionPerformed.

Se vc se refere a:

public interface ActionListener extends EventListener { /** * Invoked when an action occurs. */ public void actionPerformed(ActionEvent e); }
Entao na sua classe que implementa ActionListener pode ter algo do tipo:

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() instanceof JTextField){
			//Faz cast do Object source para JTextField e pega o valor:
			String valor = ((JTextField)e.getSource()).getText();
		}
	}

Nossa… Dps que li o texto nem lembrava do ActionPerformed.

Se vc se refere a:

RE: é exatamente disso que estou precisando. Vlw!

Cara, me surgiu outra dúvida… nesse código, onde tem JTextField eu irei por o TextField que eu irei tratar, correto??
Eu tentei fazer isso e ele deu um CANNOT FIND SYMBOL. Sendo que eu tô botando todos os códigos dentro de um construtor, exceto a criação dos botoes, labels e txtfields… Qual o problema com meu código?
Vlw.

  1. public void actionPerformed(ActionEvent e) {
  2. if (e.getSource() instanceof [u]JTextField[/u]){  
    
  3.     //Faz cast do Object source para JTextField e pega o valor:  
    
  4.     String valor = (([u]JTextField[/u])e.getSource()).getText();  
    
  5. }  
    
  6. }

Nao nao… onde tem if (e.getSource instanceof JTextField)… eu estou verificando que se o componente que eu pego do Source é um JTextField.
Pq imagina que vc pode ter mais de um componente (talvez de outro tipo) que adicionou essa classe como ActionListener. Entao vc tem que fazer uma especie de “switch” para ver qual tipo de componente vc esta tratando…

Mas se vc tem certeza que so estara usando o ActionListener pro JTextField entao vc nao precisa fazer verificacao com instanceof:

 public void actionPerformed(ActionEvent e) {
	//Vc ja tem certeza que eh um text field:
	JTextField campo = (JTextField)e.getSource();
	JOptionPane.showMessageDialog(this, "valor do caixa de texto: " + campo.getText());
}

Aqui vai um exemplo completo:

[code]
class Janela extends JFrame implements ActionListener {

public Janela() {
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	
	Container c = getContentPane();
	c.setLayout(new FlowLayout());
	
	JButton botao = new JButton("BOTAO");
	botao.addActionListener(this);
	
	JTextField campo = new JTextField();
	campo.setPreferredSize(new Dimension(50,20));
	campo.addActionListener(this);
	
	c.add(botao);
	c.add(campo);
	
	pack();
	
	setVisible(true);
}

public void actionPerformed(ActionEvent e) {
	Object componente = e.getSource();
	//Verifica se o componente é um JTextField:
	if (componente instanceof JTextField) {
		//Faz cast do Object componente para JTextField e pega o valor: 
		JTextField caixaTexto = (JTextField)e.getSource();
		JOptionPane.showMessageDialog(this, "valor do caixa de texto: " + caixaTexto.getText());
			
	} else if (componente instanceof JButton) {//Verifica se o componente é um JButton
		//Faz cast do Object componente para JButton e pega o valor: 
		JButton botao = (JButton)componente;
		JOptionPane.showMessageDialog(this, "Botao " + botao.getText() + " pressionado!");
	}
}

}[/code]