Java if/else station in action执行的功能不工作

Java if/else station in action执行的功能不工作,java,swing,jframe,Java,Swing,Jframe,我有一个Java类,actionPerformed中的if/else语句不起作用。如果我删除if语句并只放置一些语句(即show messgae对话框),则会成功调用/执行 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class CarsAndVans extends JFrame implements ActionListener { final JButton carBtn = new

我有一个Java类,actionPerformed中的if/else语句不起作用。如果我删除if语句并只放置一些语句(即show messgae对话框),则会成功调用/执行

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);
}
}
不知道是什么问题

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


谢谢您的帮助。

您正在隐藏您的变量

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
方法的操作源与类的实例不同,因此
==
无法工作


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

您正在隐藏变量

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=新JButton(“汽车”);
最终JButton vanBtn=新JButton(“Van”);
最终JButton重置=新JButton(“重置”);
vs

JButton carBtn=新的JButton(“汽车”);
JButton vanBtn=新JButton(“Van”);
JButton reset=新JButton(“reset”);

问题在于您正在构造函数中重新定义按钮类型。因此,您正在跟踪它们,并在ActionListener中使用错误的

final JButton carBtn=新JButton(“汽车”);
最终JButton vanBtn=新JButton(“Van”);
最终JButton重置=新JButton(“重置”);
vs

JButton carBtn=新的JButton(“汽车”);
JButton vanBtn=新JButton(“Van”);
JButton reset=新JButton(“reset”);