我正在设置一个收集您姓名的简单程序,然后在控制台中将其返回。该窗口成功打开,但是当我将文本输入' 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();
}
});
}
}
答案 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。