使用.getText()从JTextField输出值

时间:2014-11-19 08:14:22

标签: java jtextfield

我正在设置一个收集您姓名的简单程序,然后在控制台中将其返回。该窗口成功打开,但是当我将文本输入' jTextFieldPlayerName '并按“继续”#39;控制台打印'Your name is: null'。我正在尝试让控制台打印出你输入的内容' jTextFieldPlayerName' (例如,你的名字是:CrashDive)而不是'你的名字是:null'。 -Thanks

package bin;
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class main extends JPanel implements ActionListener {
protected JLabel text1;
protected JButton continue;
protected JTextField jTextFieldPlayerName;
protected String playerName;

public main() {

    text1 = new JLabel("<html><center>Before we can start we need to know your name.<br><html>");
    startText1.setVerticalTextPosition(JLabel.TOP);
    startText1.setHorizontalTextPosition(JLabel.CENTER);

    jTextFieldPlayerName = new JTextField();
    jTextFieldPlayerName.setPreferredSize(new Dimension(300,20));

    continue = new JButton("Continue");
    continue.setMnemonic(KeyEvent.VK_D);
    continue.addActionListener(this);
    continue.setVerticalTextPosition(AbstractButton.CENTER);
    continue.setHorizontalTextPosition(AbstractButton.CENTER);

    add(text1);
    add(jTextFieldPlayerName);
    add(continue);

    String playerName = jTextFieldPlayerName.getText();
}
public void actionPerformed(ActionEvent evt) {
    Object src = evt.getSource();

    if (src == startText1Continue && jTextFieldPlayerName.getText().length() > 0) {     
        System.out.println("Your name is: " +playerName);   
    }
}

private static void createAndShowGUI() {
    JFrame frame = new JFrame("Test Game");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    main newContentPane = new main();
    newContentPane.setOpaque(true);
    frame.setContentPane(newContentPane);
    frame.setSize(1400, 700);
    frame.setVisible(true);
}
public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            createAndShowGUI();  
        }
    });
}       

}

2 个答案:

答案 0 :(得分:0)

您应该将String playerName = jTextFieldPlayerName.getText();置于 actionPerformed 方法中 正在打印全局 playerName ,但它从未被初始化,因为它打印为null。

您可以执行以下操作。

public void actionPerformed(ActionEvent evt) {
    Object src = evt.getSource();
    String playerName = jTextFieldPlayerName.getText();

    if (src == startText1Continue && playerName.length() > 0) {     
        System.out.println("Your name is: " +playerName);   
    }
}

答案 1 :(得分:0)

当您编写“String playerName = jtextfieldPlayer.getText()”时,您没有获得引用,您将playerName分配给getText方法的当前返回值,该方法在运行时为“”。

在actionEvent上为该按钮分配playerName。