Java 使用JComboBox中的计算更新JTextField

Java 使用JComboBox中的计算更新JTextField,java,swing,jtextfield,jcombobox,Java,Swing,Jtextfield,Jcombobox,在我的代码中,我试图在某个人单击任意组合框中的选项时,在JTextField中发布总价计算。我不想要名字,比如“意大利香肠”,而是实际的总数。现在我必须单击文本框并按enter键来更新数据 如何使用JComboBox中的计算更新JTextField import java.awt.* ; import javax.swing.* ; import java.awt.event.* ; class JPizza extends JFrame implements ActionListener

在我的代码中,我试图在某个人单击任意组合框中的选项时,在
JTextField
中发布总价计算。我不想要名字,比如“意大利香肠”,而是实际的总数。现在我必须单击文本框并按enter键来更新数据

如何使用
JComboBox
中的计算更新
JTextField

import java.awt.* ;

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

 class JPizza extends JFrame implements ActionListener
 {
    private static final long serialVersionUID = 1L;

    public static void main(String[] args)
        {
            JPizza myFrame = new JPizza();
            myFrame.setVisible(true);
        }

    private static final int WIDTH = 250;
    private static final int HEIGHT = 300;
    private static final int X_ORIGIN = 200;
    private static final int Y_ORIGIN = 100;

      private static final double smallPizzaPrice = 7.00;
      private static final double mediumPizzaPrice = 9.00;
      private static final double largePizzaPrice = 11.00;
      private static final double extraLargePizzaPrice = 14.00;
      private static final int smallPizzaSize = 0;
      private static final int mediumPizzaSize = 1;
      private static final int largePizzaSize = 2;
      private static final int extraLargeSize = 3;

      private static final double cheese = 0.0, pepperoni = 1.00, peppers = 1.00, sausage = 1.00, olives = 1.00;
      private static final int cheesePlace = 0, pepperoniPlace = 1, peppersPlace = 2, sausagePlace = 3, olivesPlace = 4;

      int states = 0 ;
      double totalPrice = 0.0;   
      double pizzaSizePrice = smallPizzaPrice ;
      double toppingPrice = 0.0;

    //Toppings & Panel
    JComboBox<String> pizzaTopping;
    JPanel comboboxPanel2;

    //Pizza Size & Panel
    JComboBox<String> pizzaSize;
    JPanel comboboxPanel;

    //Price Display Field and Panel
    JTextField calculate;
    JPanel messagePanel;

    public JPizza()
    {
        super("Tower of Pizza");      

        JLabel title = new JLabel("Tower of Pizza");
        add(title);

        pizzaSize = new JComboBox<String>();
        pizzaSize.addItem( "Small" );
        pizzaSize.addItem( "Medium" );
        pizzaSize.addItem( "Large" );
        pizzaSize.addItem( "Extra Large" );
        pizzaSize.setSelectedIndex(0);
        pizzaSize.addActionListener(this);

        pizzaTopping = new JComboBox<String>();
        pizzaTopping.addItem( "Cheese" );
        pizzaTopping.addItem( "Pepperoni" );
        pizzaTopping.addItem( "Peppers" );
        pizzaTopping.addItem( "Sausage" );
        pizzaTopping.addItem( "Olives" );
        pizzaTopping.setSelectedIndex(0);
        pizzaTopping.addActionListener(this);

        calculate = new JTextField(10);   
        calculate.addActionListener(this); 

        Container contentPane = getContentPane();
        GridLayout contentpaneLayout = new GridLayout(5,0,10,10);
        contentPane.setLayout(contentpaneLayout);

        comboboxPanel = new JPanel();
        GridLayout comboboxPanelLayout = new GridLayout(2,0);
        comboboxPanel.setLayout(comboboxPanelLayout);
        comboboxPanel.add(pizzaSize);
        contentPane.add(comboboxPanel);

        comboboxPanel2 = new JPanel();
        GridLayout comboboxPanelLayout1 = new GridLayout(2,0);
        comboboxPanel2.setLayout(comboboxPanelLayout1);
        comboboxPanel2.add(pizzaTopping);
        contentPane.add(comboboxPanel2);

        messagePanel = new JPanel();
        GridLayout messagePanelLayout = new GridLayout(2,0);
        messagePanel.setLayout(messagePanelLayout);
        messagePanel.add(calculate);
        contentPane.add(messagePanel);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(X_ORIGIN, Y_ORIGIN, WIDTH, HEIGHT);
        setResizable(false);
    }


    public void actionPerformed(ActionEvent e)
    {            
        Object source = e.getSource();

                 int pizzaSiz = (int)pizzaSize.getSelectedIndex();  

                 if (source == calculate){

                 if (pizzaSiz == smallPizzaSize){                  
                    pizzaSizePrice = smallPizzaPrice;                   
                  }
                 else if (pizzaSiz == mediumPizzaSize){
                      pizzaSizePrice = mediumPizzaPrice ;

                  }
                 else if (pizzaSiz == largePizzaSize){
                      pizzaSizePrice =  largePizzaPrice;
                  }
                 else if (pizzaSiz == extraLargeSize){
                     pizzaSizePrice =  extraLargePizzaPrice;
                  }

                 int pizzaTop = (int)pizzaTopping.getSelectedIndex(); 

                 if(pizzaTop == cheesePlace ){
                     toppingPrice = cheese;
                 }
                 else if(pizzaTop == pepperoniPlace){
                     toppingPrice = pepperoni;
                 }
                 else if(pizzaTop == peppersPlace){
                     toppingPrice = peppers;
                 }
                 else if(pizzaTop == sausagePlace){
                     toppingPrice = sausage;
                 }
                 else if(pizzaTop == olivesPlace){
                     toppingPrice = olives;      
                 }

                 totalPrice = pizzaSizePrice;  
                 totalPrice +=toppingPrice;
                 calculate.setText("Total Price: $" + totalPrice);             
             }

    }
 } 
import java.awt.*;
导入javax.swing.*;
导入java.awt.event.*;
类JPizza扩展JFrame实现ActionListener
{
私有静态最终长serialVersionUID=1L;
公共静态void main(字符串[]args)
{
JPizza myFrame=新的JPizza();
myFrame.setVisible(true);
}
专用静态最终整数宽度=250;
专用静态最终内部高度=300;
专用静态最终整数X_原点=200;
专用静态最终整数Y_原点=100;
私人静态最终双倍小比萨饼价格=7.00;
私人静态最终双mediumPizzaPrice=9.00;
私人静态最终双倍大比萨饼价格=11.00;
私人静态最终双倍超大比萨饼价格=14.00;
私有静态最终int smallPizzaSize=0;
私有静态最终int mediumPizzaSize=1;
私有静态最终int largePizzaSize=2;
私有静态最终int extragragesize=3;
私人静态最终双奶酪=0.0,辣香肠=1.00,辣椒=1.00,香肠=1.00,橄榄=1.00;
私人静态最终int cheesePlace=0,pepperoniPlace=1,peppersPlace=2,sausagePlace=3,olivesPlace=4;
int状态=0;
双倍总价=0.0;
双比萨价格=小比萨价格;
双顶价格=0.0;
//浇头和面板
JComboBox比萨饼;
JPanel ComboxPanel2;
//比萨饼尺寸和面板
JComboBox比萨饼尺寸;
JPanel ComboxPanel;
//价格显示字段和面板
JTextField计算;
JPanel消息面板;
公共JPizza()
{
超级(“比萨塔”);
JLabel title=新JLabel(“比萨塔”);
增加(标题);
pizzaSize=新的JComboBox();
Pizzazize.addItem(“小”);
比萨大小。附加(“中等”);
Pizzazize.addItem(“大”);
Pizzazize.addItem(“超大”);
Pizzazize.setSelectedIndex(0);
pizzaSize.addActionListener(这个);
pizzaTopping=新的JComboBox();
比萨面加配料(“奶酪”);
比萨馅饼;意大利香肠;
比萨配料。添加(“辣椒”);
比萨馅饼面加配料(“香肠”);
比萨馅饼(橄榄);
pizzaTopping.setSelectedIndex(0);
pizzaTopping.addActionListener(这个);
计算=新的JTextField(10);
calculate.addActionListener(这个);
容器contentPane=getContentPane();
GridLayout contentpaneLayout=新的GridLayout(5,0,10,10);
contentPane.setLayout(contentpaneLayout);
comboboxPanel=newJPanel();
GridLayout ComboxPanelLayout=新的GridLayout(2,0);
setLayout(comboboxPanelLayout);
comboboxPanel.add(比萨饼大小);
添加(comboboxPanel);
comboboxPanel2=新的JPanel();
GridLayout ComboxPanelLayout1=新的GridLayout(2,0);
comboboxPanel2.setLayout(comboboxPanelLayout1);
comboboxPanel2.添加(比萨饼面);
添加(comboboxPanel2);
messagePanel=newjpanel();
GridLayout messagePanelLayout=新的GridLayout(2,0);
messagePanel.setLayout(messagePanelLayout);
messagePanel.add(计算);
contentPane.add(messagePanel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
立根(X_原点、Y_原点、宽度、高度);
可设置大小(假);
}
已执行的公共无效操作(操作事件e)
{            
对象源=e.getSource();
int pizzaSiz=(int)pizzaSize.getSelectedIndex();
如果(源==计算){
如果(pizzaSiz==smallPizzaSize){
比萨价格=小比萨价格;
}
else if(pizzaSiz==mediumpizzazize){
pizzaSizePrice=中等价格;
}
else if(pizzaSiz==largePizzaSize){
比萨价格=大比萨价格;
}
else if(比萨=超值){
比萨价格=超大比萨价格;
}
int pizzaTop=(int)pizzaTopping.getSelectedIndex();
如果(比萨顶==奶酪地){
最高价格=奶酪;
}
else if(pizzaTop==pepperoniPlace){
最高价格=意大利香肠;
}
else if(pizzaTop==peppersPlace){
最高价格=辣椒;
}
else if(pizzaTop==香肠店){
最高价格=香肠;
}
else if(pizzaTop==olivesPlace){
最高价格=橄榄;
}
总价=比萨价格;
总价+=最高价格;
calculate.setText(“总价:$”+总价);
}
}
} 

您通过限制actionPerformed对if测试所做的操作,有目的地限制您的代码:

if (source == calculate){

去掉它,该方法将在调用它时执行计算。在尝试计算之前,最好确保两个组合框都有有效的选择。您可以通过获取组合框的选定索引并测试它们是否>=0(而不是-1)来测试它们。

欢迎使用Stackoverflow!没有必要在你的问题中加入标签