Swing/Java: How to use the getText and setText string properly

192,820

Solution 1

You are setting the label text before the button is clicked to "txt". Instead when the button is clicked call setText() on the label and pass it the text from the text field.

Example:

label1.setText(nameField.getText()); 

Solution 2

in your action performed method, call:

label1.setText(nameField.getText());

This way, when the button is clicked, label will be updated to the nameField text.

Solution 3

the getText method returns a String, while the setText receives a String, so you can write it like label1.setText(nameField.getText()); in your listener.

Share:
192,820
Opoe
Author by

Opoe

Updated on July 21, 2020

Comments

  • Opoe
    Opoe almost 4 years

    I'm trying to make input nameField appear in a Label called label1 after a Button called button1 is clicked. Right now it says: 'txt' and I understand why. But I don't know how I can use the string! Can anyone explain me what I'm doing wrong and how to use this string properly?

    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);
                }
            });
            }
            }
    
  • Opoe
    Opoe about 13 years
    Thank you for your quick response, and then i can remove setText from the row above?
  • MBU
    MBU about 13 years
    yes you dont need it there unless you want it to have a default text.
  • Opoe
    Opoe about 13 years
    So i don't even need String txt = nameField.getText ? :o
  • jzd
    jzd about 13 years
    @Opoe, you only need to save the text into a String variable if you intend on using it elsewhere.
  • jzd
    jzd about 13 years
    this link is to an old version of Java.
  • Opoe
    Opoe about 13 years
    okay thanks, the error says the nameField has to be declared final. Do i have to add final before JTextField?
  • Opoe
    Opoe about 13 years
    Sorry i got it :) Thank you so much for your time and help appreciate it!