为了账号安全,请及时绑定邮箱和手机立即绑定

actionPerformed 函数中的 if/else 语句不起作用

actionPerformed 函数中的 if/else 语句不起作用

心有法竹 2023-12-13 16:23:41
我有这个 Java 类,其中 actionPerformed 中的 if/else 语句不起作用。如果我删除 if 语句并只放置一些语句(即显示消息对话框),则会成功调用/执行。import javax.swing.*;import java.awt.*;import java.awt.event.*;public class CarsAndVans extends JFrame implements ActionListener {final JButton carBtn = new JButton("Car");final JButton vanBtn = new JButton("Van");final JButton reset = new JButton("Reset");JTextField carTex = new JTextField(10);JTextField vanTex = new JTextField(10);int cars = 0, vans = 0;CarsAndVans() {    setLayout(new FlowLayout());    setSize(400, 300);    setTitle("Cars and Vans Applet");    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    setLocationRelativeTo(null);    setVisible(true);    JButton carBtn = new JButton("Car");    JButton vanBtn = new JButton("Van");    JButton reset = new JButton("Reset");    JTextField carTex = new JTextField(10);    carTex.setEditable(false);    JTextField vanTex = new JTextField(10);    vanTex.setEditable(false);    int cars = 0, vans = 0;    carTex.setEditable(false);    vanTex.setEditable(false);    add(new Label("Cars"));    add(carTex);    add(new Label("Van:"));    add(vanTex);    add( carBtn);    add( vanBtn);    add( reset);    carBtn.addActionListener(this);    vanBtn.addActionListener(this);    reset.addActionListener(this);}@Overridepublic void actionPerformed(ActionEvent actionEvent) {    if (actionEvent.getSource() == carBtn){        cars++;    } else if (actionEvent.getSource() == vanBtn) {        vans++;    } else if ((actionEvent.getSource() == reset)) {        vans = 0;        cars = 0;    }    carTex.setText(""+cars);    vanTex.setText(""+vans);}}不确定是什么问题 !我在这里查看了一些问题,但没有一个是相似的。感谢您的帮助。
查看完整描述

2 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

你正在隐藏你的变量......


final JButton carBtn = new JButton("Car");

final JButton vanBtn = new JButton("Van");

final JButton reset = new JButton("Reset");


CarsAndVans() {

    //...

    JButton carBtn = new JButton("Car");

    JButton vanBtn = new JButton("Van");

    JButton reset = new JButton("Reset");

看看你是如何声明它们两次的。这意味着传递给您的actionPerformed方法的操作源与您的类所具有的实例不同,因此==不起作用。


删除构造函数中的重新减速


查看完整回答
反对 回复 2023-12-13
?
萧十郎

TA贡献1815条经验 获得超12个赞

问题是您正在构造函数内重新定义按钮类型。所以你正在跟踪它们并在你的 ActionListener 中使用错误的那些。


final JButton carBtn = new JButton("Car");

final JButton vanBtn = new JButton("Van");

final JButton reset = new JButton("Reset");


    JButton carBtn = new JButton("Car");

    JButton vanBtn = new JButton("Van");

    JButton reset = new JButton("Reset");


查看完整回答
反对 回复 2023-12-13
  • 2 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信