【问题标题】:Why java not taking numbers from GUI?为什么java不从GUI中获取数字?
【发布时间】:2013-06-02 14:17:26
【问题描述】:

我创建了一个贷款计算器。但它没有计算价值。请您帮我找出问题所在。

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



public void initUIPanel() {
    jf = new JFrame();
    jf.setTitle("Mortgage Calculator");
    jf.setLocation(100, 200);
    jf.setSize(530, 740);
    jf.setVisible(true);
    jf.setResizable(false);


    GridBagLayout gbl = new GridBagLayout();
    GridBagConstraints gbc = new GridBagConstraints();
    JPanel pane = new JPanel(gbl);
    JPanel pane1 = new JPanel(gbl);
    JPanel pane2 = new JPanel(gbl);
    gbc.anchor = GridBagConstraints.WEST;



    gbc.weightx = 1.0;
    gbc.insets = new Insets(30, 3, 3, 3);
    loanAmount = new JTextField(12);
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.fill = GridBagConstraints.BOTH;
    gbl.setConstraints(loanAmount, gbc);
    pane.add(loanAmount);



    loanTerm = new JTextField(15);
    gbc.weightx = 1.0;
    gbc.insets = new Insets(20, 3, 3, 3);
    loanAmount = new JTextField(12);
    gbc.gridx = 1;
    gbc.gridy = 1;
    gbc.fill = GridBagConstraints.BOTH;
    gbl.setConstraints(loanAmount, gbc);
    pane.add(loanAmount);




    gbc.insets = new Insets(30, 0, 3, 0);
    interestRate = new JTextField(4);
    gbc.gridx++;
    gbc.gridy = 3;
    gbc.fill = GridBagConstraints.BOTH;
    gbl.setConstraints(interestRate, gbc);
    pane2.add(interestRate);


    b1 = new JButton("Calculate");
    b1.setPreferredSize(new Dimension(5, 25));
    gbc.gridx = 0;
    gbc.gridy = 5;
    gbc.insets = new Insets(20, 30, 0, 30);
    b1.addActionListener(this);
    gbl.setConstraints(b1, gbc);
    pane2.add(b1);




    jf.add(pane, BorderLayout.NORTH);
    jf.add(pane2, BorderLayout.SOUTH);
    jf.setVisible(true);
    jf.pack();


}

public void actionPerformed(ActionEvent e) {


    double amt, rate, pay;
    int time;
    String name;

    if (e.getSource() == b1) {
        amt = Double.parseDouble(loanAmount.getText());
        rate = Double.parseDouble(interestRate.getText());
        time = Integer.parseInt(loanTerm.getText());


        System.out.println(amt);
        System.out.println(rate);
        System.out.println(time);


    } else {
        jf.dispose();
    }
}




public static void main(String[] args) {
    // TODO Auto-generated method stub
    MortgageCalculator mc = new MortgageCalculator();
    mc.initUIPanel();



}

}

我有不同的课程

我有不同的计算类,但即使在同一个类中也至少不取值。当我输入任何值时,它会显示异常错误。 我已经编辑了代码,缩短了它们。我收到了

的错误

线程“AWT-EventQueue-0”中的异常 java.lang.NumberFormatException:对于输入字符串:“” 即使我将价值放在 textAreas 中。

【问题讨论】:

  • 有什么异常?
  • 代码太多了。将其分解为SSCCE,并且不要忘记发布确切的错误消息...
  • 线程“AWT-EventQueue-0”中的异常 java.lang.NumberFormatException:对于输入字符串:“”
  • 这里只粘贴异常的堆栈跟踪
  • NumberFormatException: For input string: "" 表示不能将空字符串转换为数字。一个数字必须至少是一位数字。

标签: java swing jtextfield parseint


【解决方案1】:

您永远不会将 JTextField loanTerm 添加到 JPanel pane 中,因此它会保留默认的空 String 值。当ActionListener 出现时,空的String 会导致NumberFormatException

JTextField 添加到容器中:

pane.add(loanTerm);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    相关资源
    最近更新 更多