java - 使用 JFrame 时出现 NumberFormatException

标签 java jframe actionlistener jtextfield numberformatexception

代码应该获取订单及其价格并将它们保存在各自的 ArrayList 中。

public class SetMenu0{

    private double price;
    private int size;
    private String output;
    private String priceOutput;
    String next;
    JTextField orderIn;
    JTextField priceIn;

    private JFrame orderInput;

    JPanel txtFldPanel;
    JPanel btnPanel;

    ArrayList orderList = new ArrayList<String>();
    ArrayList priceList = new ArrayList<Double>();

    public SetMenu0()
    {
        orderInput = new JFrame();
        orderInput.setTitle("Input Order and Price");
        orderInput.setSize(200,350);
        orderInput.getContentPane();
        orderInput.setLayout(new BorderLayout());
        orderInput.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel txtFldPanel = new JPanel();
        orderIn = new JTextField(10);
        priceIn = new JTextField(5);
        txtFldPanel.add(orderIn);
        txtFldPanel.add(priceIn);

        JPanel btnPanel = new JPanel();
        JButton addBtn = new JButton("ADD");
        btnPanel.add(addBtn);
        addBtn.addActionListener(new ButtonListener());
        addBtn.setActionCommand("add");
        JButton fnshBtn = new JButton("FINISH");
        btnPanel.add(fnshBtn);
        addBtn.addActionListener(new ButtonListener());
        fnshBtn.setActionCommand("fnsh");

        size = orderList.size();

        Container cont = orderInput.getContentPane();
        cont.add(txtFldPanel,BorderLayout.NORTH);
        cont.add(btnPanel,BorderLayout.SOUTH);

        orderInput.pack();
    }

    private class ButtonListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            String actionEnter = e.getActionCommand();
            if(actionEnter.equals("add"))
            {
                orderList.add(orderIn.getText());
                priceList.add(Double.parseDouble(priceIn.getText()));
                orderIn.setText("");
                priceIn.setText("");
            }
            else if(actionEnter.equals("fnsh"))
            {
                orderInput.dispose();
            }
        }
    }

    public JFrame getFrame()
    {
        return orderInput;
    }

    public ArrayList getOrd()
    {
        return orderList;
    }

    public ArrayList getPri()
    {
        return priceList;
    }

    public int getSize()
    {
        return size;
    }

}

当我按下“添加”按钮时,它显示一个 NumberFormatException。为什么是这样?我可以添加主代码中的其余代码,但为什么它没有保存在 ArrayList 中?

这是错误: java.lang.NumberFormatException:对于输入字符串:“” 在 java.lang.NumberFormatException.forInputString(来源未知) 在 java.lang.Integer.parseInt(来源未知) 在 java.lang.Integer.parseInt(来源未知) 在 com.howtodoinjava.demo.poi.SetMenu0$ButtonListener.actionPerformed(SetMenu0.java:84) 在 javax.swing.AbstractButton.fireActionPerformed(来源未知) 在 javax.swing.AbstractButton$Handler.actionPerformed(来源未知) 在 javax.swing.DefaultButtonModel.fireActionPerformed(来源未知) 在 javax.swing.DefaultButtonModel.setPressed(来源未知) 在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(来源未知) 在 java.awt.Component.processMouseEvent(来源未知) 在 javax.swing.JComponent.processMouseEvent(来源未知) 在 java.awt.Component.processEvent(来源未知) 在 java.awt.Container.processEvent(来源未知) 在 java.awt.Component.dispatchEventImpl(来源未知) 在 java.awt.Container.dispatchEventImpl(来源未知) 在 java.awt.Component.dispatchEvent(来源未知) 在 java.awt.LightweightDispatcher.retargetMouseEvent(来源未知) 在 java.awt.LightweightDispatcher.processMouseEvent(来源未知) 在 java.awt.LightweightDispatcher.dispatchEvent(来源未知) 在 java.awt.Container.dispatchEventImpl(来源未知) 在 java.awt.Window.dispatchEventImpl(来源未知) 在 java.awt.Component.dispatchEvent(来源未知) 在 java.awt.EventQueue.dispatchEventImpl(来源未知) 在 java.awt.EventQueue.access$400(来源不明) 在 java.awt.EventQueue$3.run(来源未知) 在 java.awt.EventQueue$3.run(来源未知) 在 java.security.AccessController.doPrivileged( native 方法) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(来源未知) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(来源未知) 在 java.awt.EventQueue$4.run(来源未知) 在 java.awt.EventQueue$4.run(来源未知) 在 java.security.AccessController.doPrivileged( native 方法) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(来源未知) 在 java.awt.EventQueue.dispatchEvent(来源未知) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(来源未知) 在 java.awt.EventDispatchThread.pumpEventsForFilter(来源未知) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(来源未知) 在 java.awt.EventDispatchThread.pumpEvents(来源未知) 在 java.awt.EventDispatchThread.pumpEvents(来源未知) 在 java.awt.EventDispatchThread.run(来源未知)

最佳答案

这可能是由于这一行:

priceList.add(Double.parseDouble(priceIn.getText()));

在尝试解析文本之前,您需要确保priceIn 文本字段包含一个数字。

关于java - 使用 JFrame 时出现 NumberFormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26358390/

相关文章:

java - 未为类型 Part 定义方法 getSubmittedFileName()

JFrame 中的 Java 移动问题

java - JFrame 中的 NullPointerException

java - 尝试使用 DAO 查找用户时出现 NullPointerException

java - ActionListener 和 JButton

java - 该域不是指向tomcat中的应用程序,而是指向Ubuntu默认页面

java - AlertDialog.Builder 显示 API 请求为 null

java - 为 Android 应用程序编写汇编语言代码

java - 向 JInternalFrame 添加新类

android - ImageView onImageChangedListener 安卓