所以我正在为我的大学课程制作一个非常基本的收银机计划。基本上每次按下一个按钮都会增加一个按钮,当我按下总计时,它总结了一切。问题是我似乎无法将变量中的值调用为总按钮。它总是保持0.0,即使我在按下其他事件时使该变量具有值。我需要通过这一点,以便我可以检查if语句是否正常工作。
最终结果将是一个寄存器,我可以通过按下不同的按钮组合来改变其总数。如果我按下一个按钮,它会得到一笔钱。因此,如果我按一次按钮一次,例如它只会是1.50。但如果我按两次,它将是3.0。我知道我可能应该为每个事件使用一个计数器,并使用我设置的预定值获得该计数器的产品。但是现在我似乎无法通过我的总按钮事件解决问题。这是我的代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BobsBurgerPanel extends JPanel
{
private int test1 = 1;
private double totalResult;
private double total1, total2, total3, total4, total5, total6;
private JButton push1, push2, push3, push4, push5, push6, total;
private JTextField text;
private JLabel label;
public BobsBurgerPanel()
{
push1 = new JButton("Small Drink");
push2 = new JButton("Large Drink");
push3 = new JButton("Small Fry");
push4 = new JButton("Large Fry");
push5 = new JButton("Veggie Burger");
push6 = new JButton("Bison Burger");
total = new JButton("Total");
label = new JLabel(" Your total is: ");
// Lining the text up with the JTectfield. \t or \n do not work.
text = new JTextField(10);
total.addActionListener(new TempListener());
add(push1);
add(push2);
add(push3);
add(push4);
add(push5);
add(push6);
add(total);
add(label);
add(text);
setPreferredSize(new Dimension(400,300));
setBackground(Color.red);
}
private class TempListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
int counter1 = 0, counter2 = 0, counter3 = 0,
counter4 = 0, counter5 = 0, counter6 = 0, counter7 = 0;
double totalR;
if (event.getSource() == push1)
{
counter1++;
total1 = counter1 * 1.50;
}
if (event.getSource() == push2)
{
counter2++;
total2 = counter2 * 2.10;
}
if (event.getSource() == push3)
{
counter3++;
total3 = counter3 * 2.00;
}
if (event.getSource() == push4)
{
counter4++;
total4 = counter4 * 2.95;
}
if (event.getSource() == push5)
{
counter5++;
total5 = counter5 * 4.55;
}
if (event.getSource() == push6)
{
counter6++;
total6 = counter6 * 7.95;
}
if (event.getSource() == total)
totalResult =
(total1+total2+total3+total4+total5+total6);
text.setText(Double.toString(totalResult));
}
}
任何帮助或其他想法都会很棒。谢谢阅读。
答案 0 :(得分:2)
您的计数器变量被声明为本地,因此每次迭代都是0
。我建议您在方法之外声明它们,因为每次执行操作时都需要增加它们。
此外,由于您的代码一次只能处于一种状态,因此您可以从else语句中受益,而不仅仅是。
答案 1 :(得分:2)
老兄,你只为你的JButton total
添加了听众。因此,actionPerformed方法始终和仅获得通过
if (event.getSource() == total)
totalResult =(total1+total2+total3+total4+total5+total6);
声明,因为JButton total
是点击事件的唯一来源。这就是你一次又一次地获得0
的原因。