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



所以我目前正在为我的大学课堂制作一个非常基本的收银机程序。基本上,每次我按下一个按钮,它都会加上一个总数,当我按下总数时,它会把所有的总数加起来。问题是,我似乎无法将变量中的值调用到total按钮中。它总是保持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。我建议您在方法之外声明它们,因为每次执行操作时都需要增加它们。

此外,由于您的代码一次只能处于一种状态,因此您将受益于else语句,而不仅仅是if.

老兄,您只在JButton total中添加了侦听器。因此actionPerformed方法始终通过
if (event.getSource() == total) totalResult =(total1+total2+total3+total4+total5+total6);
语句,因为JButton total是单击事件的唯一来源。这就是为什么你一次又一次地得到0

相关内容

  • 没有找到相关文章

最新更新