在 actionPerformed Java eclipse 中访问局部变量

Accessing local variable within actionPerformed Java eclipse

我正在尝试从 actionPerformed class 中获取一个 int 变量中的值,该整数来自另一个 class,它作为参数“asd”传递并保存值“ 1”。我显然从下面发布的代码中删除了一些行以使其更易于阅读,但我删除的内容与我遇到的问题无关。 所以在这里,我看到的输出是;

asd

1

1

0

0

最后两个输出来自 actionPerformed class,它们在我单击相关按钮时出现。我怎样才能使这 2 个输出也显示为 1?

public class customerAppointmentScreen extends JFrame implements ActionListener{
private JButton massB,indiB;
public int asd,id;

public customerAppointmentScreen(int asd) {
    System.out.println("asd ");
    System.out.println(asd);
    id=asd;
    System.out.println(id);
    
}

public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    
    if(e.getSource()==massB) {
        int id=asd;
        System.out.println(asd);
        System.out.println(id);
        //this.setVisible(false);
    }
    else if(e.getSource()==indiB) {
        
        this.setVisible(false);
    }
}

}

开始于...

public int asd,id;

public customerAppointmentScreen(int asd) {
    System.out.println("asd ");
    System.out.println(asd);
    id=asd;
    System.out.println(id);
    
}

参数asd从未分配给实例字段asd,因此实例字段保持0(另一方面,id等于参数asd)

ActionListener被触发时...

public void actionPerformed(ActionEvent e) {
    if (e.getSource() == massB) {
        int id = asd;
        System.out.println(asd);
        System.out.println(id);
        //this.setVisible(false);
    } else if (e.getSource() == indiB) {

        this.setVisible(false);
    }
}

您将实例字段 asd 值分配给局部变量 id,因为 asd 仍为零,因此 id.

“简单”的解决方案是将构造函数的参数分配给适当的实例字段,或者在 ActionListener 中使用正确的实例字段,具体取决于您的意图。