java - Swing 号码格式异常

标签 java swing exception numberformatexception

出于某种原因,下面的 AddListener 类不起作用,并且我不断收到数字格式异常。谁能告诉我这样做的原因。在我看来,它似乎应该有效。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class BabyCalculator extends JFrame {

    JFrame theFrame = this;
    JTextField addField; // Declaring this here so that you can access the variable from other places. MAKE SURE TO NOT DECLARE THIS AGAIN IN THE CONSTRUCTOR
    JTextField totalField;

    public BabyCalculator() {
        //You set this up so that you can refer to the frame using the inner class below.
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setName("Baby Calculator");
        setLayout(new GridLayout(3, 0));
        //add
        JLabel addLabel = new JLabel("Amount to add:");
        addField = new JTextField(10);
        JButton addButton = new JButton("add");
        addButton.addActionListener(new AddListener());
        //multiply
        JLabel multiplyLabel = new JLabel("Amount to multiply:");
        JTextField multiplyField = new JTextField(10);
        JButton multiplyButton = new JButton("multiply");
        //total
        JLabel totalLabel = new JLabel("Total");
        totalField = new JTextField(10);
        totalField.setEditable(false);
        JButton stopButton = new JButton("Stop");
        stopButton.addActionListener(new StopListener());
        //Create Panels
        JPanel topRow = new JPanel(new BorderLayout());
        JPanel middleRow = new JPanel(new BorderLayout());
        JPanel bottomRow = new JPanel(new FlowLayout());
        //Add the top Row
        topRow.add(addLabel, BorderLayout.WEST);
        topRow.add(addField, BorderLayout.CENTER);
        topRow.add(addButton, BorderLayout.EAST);
        add(topRow);

        middleRow.add(multiplyLabel, BorderLayout.WEST);
        middleRow.add(multiplyField, BorderLayout.CENTER);
        middleRow.add(multiplyButton, BorderLayout.EAST);
        add(middleRow);

        bottomRow.add(totalLabel);
        bottomRow.add(totalField);
        bottomRow.add(stopButton);

        add(bottomRow);


        pack();
        setVisible(true);
    }


    public class AddListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            String addFieldText = addField.getText();
            String totalFieldText = totalField.getText();
            double addAmount = Double.parseDouble(addFieldText);
            double total = Double.parseDouble(totalFieldText);
            total += addAmount;
            totalField.setText(total + "");

        }
    }
    //end class AddListener

    public class StopListener implements ActionListener {//this is an inner class

        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(theFrame, "You Clicked the stop button");
        }//end class StopListener
    }

    public static void main(String[] args) {
        JFrame newFrame = new BabyCalculator();
    }
}

注意:代码中的问题肯定与AddListener有关。每当我单击 GUI 中的添加按钮时,都会出现异常。

最佳答案

问题出在 totalFieldText 上,它的默认值为空,这意味着当您尝试转换为 double 值时,它会导致 NumberFormatException

例如,尝试为其指定默认值 0

totalField = new JTextField("0", 10);

您可能还想看看How to Use SpinnersHow to Use Formatted Text Fields这将使您的生活更轻松

关于java - Swing 号码格式异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29203287/

相关文章:

java - 使用 int[] 填充 JComboBox

java - 运行 ant-target 通过 java 发送邮件

java - 使 Android 应用程序在一个 session 中连接

java - 在 JFileChooser 中添加 .txt 扩展名

c# - Exception.ToString()上的OutOfMemory异常

java - 从表迁移到网格 vaadin

java - 如何更改JTabbed Panel中箭头键的默认功能?

java - X 和 Y 为 float 而不是整数

java - 如何捕获 "Invalid hex digit"?

java - 在哪里处理文件异常?