gpt4 book ai didi

java - 比萨订购的复选框 ItemListener 逻辑

转载 作者:行者123 更新时间:2023-12-04 05:29:36 24 4
gpt4 key购买 nike

基本上这个简单程序的作用是
单击按钮时显示摘要,
比萨大小有三个单选按钮,浇头有三个复选框。
我遇到的问题是,当用户第一次单击浇头,然后单击按钮并在 MessageDialog 中显示适当的摘要后,当用户想要没有浇头时,它不会显示“未选择浇头”

import java.applet.Applet;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.*;
import javax.swing.*;

public class PizzaOrdering extends Applet implements ActionListener, ItemListener {

Button btnOk = new Button("OK");
CheckboxGroup cbgSize = new CheckboxGroup();
Checkbox chkSmall = new Checkbox("Small", cbgSize, false);
Checkbox chkMedium = new Checkbox("Medium", cbgSize, false);
Checkbox chkLarge = new Checkbox("Large", cbgSize, false);
Checkbox chkPep = new Checkbox("Pepperoni");
Checkbox chkMush = new Checkbox("Mushroom");
Checkbox chkAnch = new Checkbox("Anchiovies");
String pizza = "";
String topping1 = "";
String topping2 = "";
String topping3 = "";
String others = "with no toppings";
Label lbl1 = new Label("Size");
Label lbl2 = new Label("Toppings");
Label spacer = new Label(" ");
Label spacer2 = new Label(" ");

@Override
public void init() {
resize(250, 150);
add(lbl1);
add(spacer);
add(chkSmall);
add(chkMedium);
add(chkLarge);
add(lbl2);
add(spacer2);
add(chkPep);
add(chkMush);
add(chkAnch);
add(btnOk);
chkAnch.addItemListener(this);
chkPep.addItemListener(this);
chkMush.addItemListener(this);
btnOk.addActionListener(this);
}

@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnOk) {
if (cbgSize.getSelectedCheckbox() == chkSmall) {
pizza = "Small";
}
if (cbgSize.getSelectedCheckbox() == chkMedium) {
pizza = "Medium";
}
if (cbgSize.getSelectedCheckbox() == chkLarge) {
pizza = "Large";
}
JOptionPane.showMessageDialog(btnOk, "You ordered a " +
pizza + " pizza " + others, "Your Order", WIDTH);
}
}

@Override
public void itemStateChanged(ItemEvent ex) {
boolean state1 = false;
boolean state2 = false;
boolean state3 = false;
if (ex.getItemSelectable() == chkMush) {
state1 = chkMush.getState();
if (state1 == true) {
topping1 = "Mushroom";
} else if (state1 == false) {
topping1 = "";
if (state2 == false && state3 == false) {
others = "with no toppings";
}
}
}

if (ex.getItemSelectable() == chkPep) {
state2 = chkPep.getState();
if (state2 == true) {
topping2 = "Pepperoni";
} else if (state2 == false) {
topping2 = "";
if (state1 == false && state3 == false) {
others = "with no toppings";
}
}
}

if (ex.getItemSelectable() == chkAnch) {
state3 = chkAnch.getState();
if (state3 == true) {
topping3 = "Anchiovies";

} else if (state3 == false) {
topping3 = "";
if (state1 == false && state2 == false) {
others = "with no toppings";
}
}
}
others = " with the following topping:" +
topping1 + " " + topping2 + " " + topping3;
}
}

最佳答案

itemStateChanged当用户没有选中或取消选中任何复选框时,甚至不会调用方法。因此,默认情况下将“未选择顶部”标签设置为可见,并在 itemStatechanged 中隐藏或删除它。选择一些顶部的方法。您可以在 itemStateChanged 中使用静态 int 字段 'count'方法并在选择的每个浇头上增加它,并在每个取消选择的浇头上减少它。

这样,对于每次取消选择,将计数减一并检查计数,如果为零,只需将该标签设置为“未选择顶部”可见或重新出现。

关于java - 比萨订购的复选框 ItemListener 逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12786288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com