Java GUI - 将其他if语句的值调用到getSource()事件中

时间:2014-05-05 11:41:08

标签: java user-interface

所以我正在为我的大学课程制作一个非常基本的收银机计划。基本上每次按下一个按钮都会增加一个按钮,当我按下总计时,它总结了一切。问题是我似乎无法将变量中的值调用为总按钮。它总是保持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));
    }
}

任何帮助或其他想法都会很棒。谢谢阅读。

2 个答案:

答案 0 :(得分:2)

您的计数器变量被声明为本地,因此每次迭代都是0。我建议您在方法之外声明它们,因为每次执行操作时都需要增加它们。

此外,由于您的代码一次只能处于一种状态,因此您可以从else语句中受益,而不仅仅是。

答案 1 :(得分:2)

老兄,你只为你的JButton total添加了听众。因此,actionPerformed方法始终获得通过     if (event.getSource() == total) totalResult =(total1+total2+total3+total4+total5+total6);
声明,因为JButton total是点击事件的唯一来源。这就是你一次又一次地获得0的原因。