Balanço/Java:Como usar a string getText e setText corretamente
Pergunta
Estou tentando fazer uma contribuição nameField
aparecer em um Label
chamado label1
após um Button
chamado button1
é clicado.Neste momento diz:'txt' e eu entendo o porquê.Mas não sei como posso usar o barbante!Alguém pode me explicar o que estou fazendo de errado e como usar essa string corretamente?
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class thisismytest2 {
public static void main(String[] args) {
final JFrame frame = new JFrame();
JPanel panel = new JPanel();
JTextField nameField = new JTextField("...", 2);
JButton button1 = new JButton();
final JLabel label1 = new JLabel();
label1.setText("txt");
label1.setVisible(false);
String txt = nameField.getText();
frame.add(panel);
panel.add(button1);
panel.add(label1);
frame.setSize(200,200);
frame.setVisible(true);
panel.add(nameField);
frame.setSize(600,400);
nameField.setBounds(400, 40, 400, 30);
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
label1.setVisible(true);
}
});
}
}
Solução
Você está definindo o texto do rótulo antes de clicar no botão para "txt".Em vez disso, quando o botão é clicado, ligue setText()
na etiqueta e passe o texto do campo de texto.
Exemplo:
label1.setText(nameField.getText());
Outras dicas
no seu método de ação executada, chame:
label1.setText(nameField.getText());
Desta forma, quando o botão for clicado, o rótulo será atualizado para o texto nameField.
o getText
método retorna uma String, enquanto o setText
recebe uma String, então você pode escrevê-la como label1.setText(nameField.getText());
em seu ouvinte.
Configure um DocumentListener em nameField.Quando nameField for atualizado, atualize seu rótulo.
http://download.oracle.com/javase/1.5.0/docs/api/javax/swing/JTextField.html