Java 我的JTextField怎么了?

Java 我的JTextField怎么了?,java,user-input,jtextfield,Java,User Input,Jtextfield,我正在尝试为一个小游戏制作一个应用程序,目前我遇到了一个让代码正常工作的问题。它应该显示一个带有文本字段、jbutton和不可编辑文本字段的窗口。我需要让它读取我在第一个文本字段中输入的内容。然而,当我运行它时,我收到的是: Exception in thread "main" java.lang.NumberFormatException: For input string: "Enter Command" at sun.misc.FloatingDecimal.readJavaFormat

我正在尝试为一个小游戏制作一个应用程序,目前我遇到了一个让代码正常工作的问题。它应该显示一个带有文本字段、jbutton和不可编辑文本字段的窗口。我需要让它读取我在第一个文本字段中输入的内容。然而,当我运行它时,我收到的是:

Exception in thread "main" java.lang.NumberFormatException: For input
string: "Enter Command"

at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)
at java.lang.Double.parseDouble(Double.java:510)
at TextAdv.<init>(TextAdv.java:16)
at TextAdv.main(TextAdv.java:43)

您正在尝试分析jtfCommand字段的值,该字段为Enter命令:

如果jtfCommand.getText返回的字符串不是数字,则此行将引发NumberFormatException

您应该知道,以下代码行使用初始化为第一个参数的文本值创建JTextField实例:


当您调用jtfCommand.getText时,它返回的Enter命令显然不是一个数字。

您是否阅读了javadocs,因为第一列是文本,不能转换为双精度,因为错误消息状态字段中的文本是Enter命令,显然不是数字。您以程序化的方式思考,这不是GUI的工作方式,它们以事件驱动的方式工作,您会对发生的事情做出响应it@MadProgrammer如何使用字符串输入而不是数字输入?我对这一切都是全新的,我正在尽我最大的努力。如果这是一个相对容易的困境,请提前道歉。JTextField将只处理字符串值。在将来的某个时候,您需要从文本字段中获取值并进行转换,这可能会导致错误,您需要准备好处理该错误。JTextField支持ActionListener API,但您也可以使用另一个按钮。一个更复杂的解决方案是使用JFormattedTextField,但您可能会发现这有点过头了head@MadProgrammer我想我找到了另一种方法来做我想做的事情,你向我解释了为什么它要做我想做的事情,谢谢!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class TextAdv {

    JFrame jtfMainFrame;
    JButton jbnButton2;
    JTextField jtfInput, jtfCommand;
    JPanel jplPanel, jplPanel2;
    public TextAdv() {
        jtfMainFrame = new JFrame("TextAdv");
        jbnButton2 = new JButton("Quit (LEAVES GAME)");
        jtfInput = new JTextField(55);
        jtfCommand = new JTextField("Enter Command", 40);
        double command = Double.parseDouble(jtfCommand.getText());
        jplPanel = new JPanel();
        jplPanel2 = new JPanel();
        jbnButton2.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });

        jtfInput.setEditable(false);
        jplPanel.setLayout(new FlowLayout());
        jplPanel.add(jtfCommand);
        jplPanel.add(jbnButton2);
        jplPanel2.add(jtfInput);
        jtfMainFrame.getContentPane().add(jplPanel2, BorderLayout.SOUTH);
        jtfMainFrame.getContentPane().add(jplPanel, BorderLayout.CENTER);
        jtfMainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jtfMainFrame.pack();
        jtfMainFrame.setVisible(true);
    }

    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(UIManager
                    .getCrossPlatformLookAndFeelClassName());
        } catch (Exception e) {
        }
        TextAdv application = new TextAdv();
    }
}
double command = Double.parseDouble(jtfCommand.getText());
jtfCommand = new JTextField("Enter Command", 40);