我的JTextField出了什么问题?

时间:2017-03-08 02:37:38

标签: java user-input jtextfield

我正在尝试为小型游戏制作应用程序,而我目前遇到了让代码运行的问题。它应该显示一个带有文本字段,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)

我在阅读错误方面并不是很出色,而且我一直在努力解决这个问题一个小时左右。如果有人可以帮我解决这个问题,我将不胜感激。谢谢。

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();
    }
}

1 个答案:

答案 0 :(得分:1)

您正在尝试解析jtfCommand "Enter Command"字段的值:

double command = Double.parseDouble(jtfCommand.getText());

如果NumberFormatException返回不是数字的字符串,则此行抛出jtfCommand.getText()

您应该知道以下代码行创建JTextField实例,并将文本值初始化为第一个参数(Source Code ):

jtfCommand = new JTextField("Enter Command", 40);

当您致电jtfCommand.getText()时,它会返回显然不是数字的"Enter Command"