所以基本上我正在创建这个披萨程序,在一个页面上我有一个部分,人们可以选择浇头列表。现在每个顶部都是1.50,一旦他们点击顶部,我的gui上的侧边栏就会显示价格。现在我有12个浇头单选按钮,但问题出现当我点击2个单选按钮它只显示价格1.50。
我只是想知道每次按下顶部按钮时是否有办法在我的侧栏上添加1.50到我的jLabel,当我取消选择顶部时,它会从jLabel中减去1.50,因此价格是准确的。
这是我现在所做的代码
import java.awt.event.*;
import javax.swing.*;
/**
*
* @author silve
*/
public class Page3 extends javax.swing.JFrame {
/**
* Creates new form Page3
*/
public Page3() {
initComponents();
double Checkout1 = RadioBtn();
double Lj = Checkout1 * 1.50;
String LM = String.valueOf(Lj);
ToppingsPriceL.setText((LM) + "0");
}
public double RadioBtn() {
double Checkout = 0;
GreenOlivesBtn.addItemListener(new ItemListener(){
@Override
public void itemStateChanged(ItemEvent e) {
if(GreenOlivesBtn.isSelected()) {
Checkout++;
}
}
});
return Checkout;
}
用户选择radio button
后,在radio button
监听器上,您可以检查检查了多少radio buttons
,具体取决于您可以执行的单选按钮检查计数(单选按钮检查计数)* 1.50 =总金额。
脚步。
radio buttons
都未经检查。伪代码:
radio buttons
我正在使用复选框来处理您的情况。逻辑保持不变
item.Java
OnRadioSelectListner() {
checkedCount = getCheckedRadioButtonCount() //Gets the count of all checked radio butttons
totalPrice = checkCount * 1.5;
}
getCheckedRadioButtonCount() {
radioCheckedCount = 0;
if(radio1.isChecked()) then radioCheckedCount++;
if(radio2.isChecked()) then radioCheckedCount++;
if(radio3.isChecked()) then radioCheckedCount++;
.....
.....
return radioCheckedCount;
}
program.Java
public class Item {
String title;
Double price;
boolean checked;
Item(String title, Double price) {
this.title = title;
this.price = price;
}
@Override
public String toString() {
return title + " - " + price;
}
}
screen one.Java
import javax.swing.*;
public class Program {
public static void main(String[] args) {
ScreenOne screenOne = new ScreenOne();
screenOne.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
输出:
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
class ScreenOne extends JFrame {
private Item items[] = {
new Item("item1", 1.5),
new Item("item2", 1.5),
new Item("item3", 1.5),
};
private JPanel jPanel = new JPanel(new GridLayout(0, 1, 4, 4));
private JLabel totalLabel;
private JCheckBox[] boxes;
ScreenOne() {
initComponents();
}
private void initComponents() {
jPanel.setBorder(new EmptyBorder(100, 100, 100, 100));
setContentPane(jPanel);
boxes = new JCheckBox[items.length];
for (int i = 0; i < items.length; i++) {
createCheckBox(i);
}
totalLabel = new JLabel("Total will appear here");
totalLabel.setBorder(new EmptyBorder(10, 10, 10, 10));
jPanel.add(totalLabel);
setTitle("Multi Checkbox Demo");
pack();
setVisible(true);
setResizable(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private void createCheckBox(int index) {
boxes[index] = new JCheckBox(items[index].toString());
boxes[index].setBorder(new EmptyBorder(0, 0, 0, 0));
boxes[index].addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
items[index].checked = boxes[index].isSelected();
int totalItemsChecked = getCheckedCount();
totalLabel.setText("Total: " + totalItemsChecked * 1.5);
}
});
jPanel.add(boxes[index]);
}
private int getCheckedCount() {
int count = 0;
for (int i = 0; i < items.length; i++) {
if(items[i].checked) {
count++;
}
}
return count;
}
}
希望这个答案可以帮到你。
谢谢