Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我在gui程序中做错了什么?_Java_User Interface_If Statement - Fatal编程技术网

Java 我在gui程序中做错了什么?

Java 我在gui程序中做错了什么?,java,user-interface,if-statement,Java,User Interface,If Statement,我试图创建一个程序,让用户选择一个项目。选择项目后,将出现一个包含总价成本的框。当我运行程序时,我点击了一个项目,结果是否定的。似乎我的if和else语句是错误的,我就是不知道如何正确地修复它 package javaapplication118; import java.awt.Color; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;

我试图创建一个程序,让用户选择一个项目。选择项目后,将出现一个包含总价成本的框。当我运行程序时,我点击了一个项目,结果是否定的。似乎我的if和else语句是错误的,我就是不知道如何正确地修复它

package javaapplication118;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class pizza extends JFrame {

JTextField textField, priceField;
JCheckBox pineApple, drink, delivery, meatballs;
JButton button;

pizza() {

    super("Pizza order");
    setLayout(new FlowLayout());

    textField = new JTextField("hello please check anything you would like to order");
    textField.setEditable(false);
    textField.setBackground(Color.yellow);
    add(textField);


    EventHandler handler = new EventHandler();
    pineApple = new JCheckBox("Pine apples");
    pineApple.addItemListener(handler);
    add(pineApple);

    drink = new JCheckBox("drink");
    drink.addItemListener(handler);
    add(drink);

    delivery = new JCheckBox("delivery");
    delivery.addItemListener(handler);
    add(delivery);

    meatballs = new JCheckBox("meat balls");
    meatballs.addItemListener(handler);
    add(meatballs);

    priceField = new JTextField("$", 15);

    add(priceField);


    button = new JButton("confirm order");
    button.addActionListener(
            new ActionListener() {
        public void actionPerformed(ActionEvent event) {

            JOptionPane.showMessageDialog(null, "Your order has been placed.");



        }
       });
       add(button);


   }
   //JTextField textField priceField 
  // JCheckBox pineApple, drink, delivery, meatballs; 

   public class EventHandler implements ItemListener {

    double price = 0;

    public void itemStateChanged(ItemEvent event) {

        if (pineApple.isSelected()) {  // if pineapple is selected add to the price

            price = price + 2.30;

        } else if (!pineApple.isSelected()){ // if pineapple is deselected subtract from price
            price = price - 2.30;

        }
         if (delivery.isSelected()) {

            price = price + 5;

        } else if (!delivery.isSelected()) {

            price = price - 5;

        }
         if (drink.isSelected()) {

            price = price + 1;

        } else if (!drink.isSelected()) {

            price = price - 1;

        }
         if (meatballs.isSelected()) {

            price = price + 1;

        } else if (!meatballs.isSelected()) {

            price = price - 1;

        }



        priceField.setText("$" + price);

    }
   }
 }
你似乎在“假设”一个或多个项目在过去被选中,但你没有办法知道这是否是真的

相反,将
price
重置为
0
,并且只为当前实际选定的项目添加
price

public void itemStateChanged(ItemEvent event) {
    price = 0;
    if (pineApple.isSelected()) {
        price = price + 2.30;
    }
    if (delivery.isSelected()) {
        price = price + 5;
    }
    if (drink.isSelected()) {
        price = price + 1;
    }
    if (meatballs.isSelected()) {
        price = price + 1;
    }

    priceField.setText("$" + price);
}
你似乎在“假设”一个或多个项目在过去被选中,但你没有办法知道这是否是真的

相反,将
price
重置为
0
,并且只为当前实际选定的项目添加
price

public void itemStateChanged(ItemEvent event) {
    price = 0;
    if (pineApple.isSelected()) {
        price = price + 2.30;
    }
    if (delivery.isSelected()) {
        price = price + 5;
    }
    if (drink.isSelected()) {
        price = price + 1;
    }
    if (meatballs.isSelected()) {
        price = price + 1;
    }

    priceField.setText("$" + price);
}

您的代码从价格中减去价值。也就是说,当你选择“肉丸”时,它会给价格增加1,现在的价格是1美元 然后,当其他复选框被清除时,(您已经进行了编码,以便在复选框被清除时,它会减去相关值)

菠萝2.30美元,送货5.00美元,饮料1.00美元,(总共8.30美元)从价格中“扣除”

1-8.3=-7.3


这就是你得到负值的原因。

你的代码从价格中减去值。也就是说,当你选择“肉丸”时,它会给价格增加1,现在的价格是1美元 然后,当其他复选框被清除时,(您已经进行了编码,以便在复选框被清除时,它会减去相关值)

菠萝2.30美元,送货5.00美元,饮料1.00美元,(总共8.30美元)从价格中“扣除”

1-8.3=-7.3


这就是为什么会得到负值。

对任何项调用itemStateChanged()的方法是否已更改???@tinle if(true)else函数与if(true)else if(!true)函数相同。为什么这样写我是java新手,有什么更好的方法可以做到这一点?多么糟糕的布局混乱!用户未知你能告诉我一个更好的方法来演示这个问题吗,或者有什么方法可以让它不再是一个糟糕的布局?对任何项目调用itemStateChanged()方法吗?@tinle if(true)else函数与if(true)else if(!true)函数相同。你为什么这样写我是java新手,什么是更好的方法呢?多么糟糕的布局混乱!用户未知你能给我一个更好的方法来演示这个,或者让它不那么糟糕的布局吗?起初我是这样做的,但是如果你取消选择它,它会继续增加价格。注意方法中的第一行。每次调用该方法之前,我都会将
price
设置为
0
。起初我是这样做的,但如果取消选择,它会继续添加到price中。请注意方法中的第一行。每次调用该方法时,在执行任何其他计算之前,我将
price
设置为
0