【问题标题】:JAVA GUI won't calculate the priceJAVA GUI 不会计算价格
【发布时间】:2015-05-01 21:28:45
【问题描述】:

我正在尝试让这个应用程序进行计算,但它不会。花很多时间在上面。我只想计算我按下按钮的那些。单击正确的组合框时,我需要它显示正确的价格。我认为价格已经确定。

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

public class retailsalescalcu extends JFrame {
    //create the objects
    JLabel department;
    JLabel number;
    JLabel name;
    JLabel price;
    JLabel discount;
    JLabel sale;
    JComboBox<String> dept;
    JTextField itemNum;
    JTextField itemName;
    JTextField itemPrice;
    JTextField itemDisc;
    JTextField salePrice;
    JButton calculate;
    JButton clear;

    public retailsalescalcu() {
        //set object variables
        super("Retail Sales Calculator");  //set window bar title
        setSize(300, 300);  //set window size
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //set window              close
        GridLayout grid = new GridLayout(7, 2);
        setLayout(grid);
        department = new JLabel("Department");
        dept = new JComboBox<String>();
            dept.addItem("Select");
            dept.addItem("Men's Clothing");
            dept.addItem("Women's Clothing");
            dept.addItem("Shoes");
            dept.addItem("Belts");
            dept.addItem("Electronics");
            dept.addItem("Hats");
            //add ItemListener - JTextField & ComboBox
            dept.addItemListener(new ItemListener() {
                public void itemStateChanged(ItemEvent ie) {
                    String str = (String)dept.getSelectedItem();
                    itemNum.setText(str);
                }  //end public void
            });  //end item listener
        number = new JLabel("Item Number");
        itemNum = new JTextField(10);
        name = new JLabel("Item Name");
        itemName = new JTextField(10);
        price = new JLabel("Original Price");
        itemPrice = new JTextField(10);
        discount = new JLabel("Discount");
        itemDisc = new JTextField(10);
        sale = new JLabel("Sale Price");
        salePrice = new JTextField(10);
        salePrice.setEditable(false);
        calculate = new JButton("Calculate");
        clear = new JButton("Clear");

        //add objects to JFrame
        add(department);
        add(dept);
        add(number);
        add(itemNum);
        add(name);
        add(itemName);
        add(price);
        add(itemPrice);
        add(discount);
        add(itemDisc);
        add(sale);
        add(salePrice);
        add(calculate);
        add(clear);    

        //add event listener to calculate sale price
        calculate.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent retail) {
                String input1;
                String input2;
                double origPrice;
                double percOff;
                double clearance;   

                input1 = itemPrice.getText();
                input2 = itemDisc.getText();
                origPrice = Double.parseDouble(input1);
                percOff = Double.parseDouble(input2)/100;
                clearance = origPrice - (origPrice * percOff); 
                DecimalFormat df = new DecimalFormat("$#,###.##");  
                df.format(clearance);                        
                salePrice.setText(df.format(clearance));                                         
                salePrice.setText(df.toString());  //output to JTextField    
            }
        });


        //add event listener to reset fields
        clear.addActionListener (new ActionListener() {
            public void actionPerformed(ActionEvent event) {  //JButton event if clicked
                dept.setSelectedIndex(0);  //Combo Box will be empty and can be reset
                itemNum.setText(null);  //Item Number will be empty and can be reset
                itemName.setText(null);  //Item Name will be empty and can be reset
                itemPrice.setText(null);  //Item Price will be empty and can be reset
                itemDisc.setText(null);  //Item Discount will be empty and can be reset
                salePrice.setText(null);  //Item SalePrice will be empty and can be reset
            }
        });

        setVisible(true);
    }  //end public retailsalescalcu

    public static void main(String[] args) {
        new retailsalescalcu();

    }  //end public static void

  }  //end public class retailsalescalcu

【问题讨论】:

    标签: java eclipse user-interface


    【解决方案1】:

    调试你的代码后,我发现你应该从你的代码中删除/注释第 100 行

    来自

     DecimalFormat df = new DecimalFormat("$#,###.##");  
                            df.format(clearance);                        
                            salePrice.setText(df.format(clearance));                                         
                            salePrice.setText(df.toString());  //output to JTextField    
                            System.err.println(df.toString());
                        }
                    }); 
    

     DecimalFormat df = new DecimalFormat("$#,###.##");  
                            df.format(clearance);                        
                            salePrice.setText(df.format(clearance));                                         
                            //salePrice.setText(df.toString());  //output to JTextField    
                            System.err.println(df.toString());
                        }
                    });
    

    编辑:

    【讨论】:

    • 感谢回复,还是不行。试着像你说的那样评论这条线。 @Lalit Rao
    • 我也附上了O/P图片。你现在还想要什么?它在我的最后工作
    • 对不起,我又试了一次,还是不行。可能是我的程序,我用的是eclipse?
    • IDE 与此无关。你得到什么例外?最好说一下您在销售价格字段中收到的文字?
    • 线程“AWT-EventQueue-0”中的异常 java.lang.NumberFormatException:sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source) at java.lang.Double.parseDouble(Unknown Source) 处的空字符串在retailsalescalcu$2.actionPerformed(retailsalescalcu.java:87) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)在 javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    【解决方案2】:

    这里有个问题:

    //salePrice.setText(df.toString()); 
    

    注释掉,点击计算后您将看到您的价格。您已经在此处设置salesPrice

    salePrice.setText(df.format(clearance)); 
    

    toString() 不会给你你想要的。

    【讨论】:

    • 非常感谢您的回复,但是我已经尝试过了,它仍然无法正常工作。 @whiskeyspider
    猜你喜欢
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多