Java 正在尝试更新总订单列表
我正在尝试更新我的totalOrderedLabel,以便当我从orderList中删除项目时,totalOrderedLabel中的totalPrice将被更新 移除按钮Java 正在尝试更新总订单列表,java,swing,Java,Swing,我正在尝试更新我的totalOrderedLabel,以便当我从orderList中删除项目时,totalOrderedLabel中的totalPrice将被更新 移除按钮 JButton removeButton = new JButton("remove"); removeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
JButton removeButton = new JButton("remove");
removeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int selectionNumber = orderList.getSelectedIndex();
if (selectionNumber == -1) {
JOptionPane.showMessageDialog(MenuPage.this, "Remove Item");
} else {
listOrder.removeElementAt(selectionNumber);
double totalPrice = 0.0;
for(Food food : OrderedFoodList) {
totalPrice = totalPrice + food.getPrice();
}
totalOrderedLabel.setText("Total price: " + totalPrice);
OrderedFoodList.clear();
}
}
});
removeButton.setBounds(680, 189, 117, 29);
contentPane.add(removeButton);
orderList/用于合计总价的方法
menulist listOrder = new menulist();
orderList = new JList(listOrder);
JButton orderBtn = new JButton();
orderBtn.setText("Place Order");
orderBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int selectionNumber = mealList.getSelectedIndex();
if (selectionNumber == -1){
JOptionPane.showMessageDialog(MenuPage.this, "Please select a meal");
} else {
Food orderedMeal = (Food) mealList.getSelectedValue();
JOptionPane.showMessageDialog(MenuPage.this, "You have ordered " //clear the last order . find a code to do that
+ orderedMeal + "");
listOrder.addElement(orderedMeal);
double totalPrice = 0.0;
for(Food food : OrderedFoodList) {
totalPrice = totalPrice + food.getPrice();
}
totalOrderedLabel.setText("Total price: " + totalPrice);
}
}
});
orderBtn.setBounds(259, 189, 117, 29);
contentPane.add(orderBtn);
全序标签
totalOrderedLabel = new JLabel("Total Price");
totalOrderedLabel.setBounds(697, 111, 142, 16);
contentPane.add(totalOrderedLabel);
totalCaloriesLabel = new JLabel("Total Calories");
totalCaloriesLabel.setBounds(388, 205, 253, 16);
contentPane.add(totalCaloriesLabel);
}
public void updateLabel(menulist model) {
int selectionNumber = mealList.getSelectedIndex();
if (selectionNumber == -1){
//JOptionPane.showMessageDialog(MenuPage.this, "Please select a meal");
} else {
Food menulist = (Food) mealList.getSelectedValue();
Food itemFood = (Food) ((menulist) model).getElementAt(selectionNumber);
//Add new food to current order
OrderedFoodList.add(itemFood);
我正在尝试更新我的totalOrderedLabel,以便当我从orderList中删除项目时,totalOrderedLabel中的totalPrice将被更新
那么当你在列表中添加一个新项目时呢?在这两种情况下,概念是相同的,您迭代列表中的所有项目,然后更新标签
因此,当列表中的项目发生更改时,需要通知您。将ListDataListener
添加到ListModel
中。然后在生成事件时,迭代列表中的所有剩余项,重新计算总数,然后更新JLabel
阅读Swing教程中关于的部分,了解工作示例和更多信息。IMO最好的方法是使OrderedFoodList
可观察
,然后为依赖它的所有图形字段添加Observer
s。更新时,请记住使用SwingUtilities.invokeLater(Runnable)@LydiaRichardson,您遇到的确切问题是什么?您知道如何设置JLabel的文本吗?您知道如何遍历JList并合计所有值吗?您似乎在“下订单”按钮中执行所有这些逻辑。那么“删除”按钮有什么不同呢?为什么你不和你的兄弟一起解决这个问题呢:当你在使用它时,提醒你的兄弟在你得到帮助时开始接受答案。