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

我有这个 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);



}

@Override

public 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);

}

}

不确定是什么问题 !


我在这里查看了一些问题,但没有一个是相似的。


感谢您的帮助。


心有法竹
浏览 124回答 2
2回答

30秒到达战场

你正在隐藏你的变量......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方法的操作源与您的类所具有的实例不同,因此==不起作用。删除构造函数中的重新减速

萧十郎

问题是您正在构造函数内重新定义按钮类型。所以你正在跟踪它们并在你的 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");
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java