【问题标题】:Java Swing Access Class Variables From Button来自按钮的 Java Swing 访问类变量
【发布时间】:2015-08-26 02:01:39
【问题描述】:

所以在我的 Java Swing 应用程序中,我需要一个按钮 ActionListener 才能访问其范围之外的变量,如下所示:

int x = 13;

JButton btn = new JButton("New Button");
btn.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        System.out.println(x);
    }
});

但我得到一个变量超出范围错误。如何访问它?

【问题讨论】:

标签: java swing


【解决方案1】:

动作监听器是一个匿名的内部类。这意味着它只能使用外部范围的最终变量。因此,要么将 x 声明为 final,要么以其他方式将其传递给类。

这应该可行:

final int x = 13;

JButton btn = new JButton("New Button");
    btn.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        System.out.println(x);
    }
});

或者,请参阅Pass variables to ActionListener in Java 了解其他一些选项。

【讨论】:

  • 所以如果我想让按钮从文本框中获取文本并打印出来,我可以制作一个最终的 JTextField,然后调用 getText() 吗?
  • 是的,应该可以。在内部类之外声明的所有变量都必须是 final 才能在类内部使用。
猜你喜欢
  • 1970-01-01
  • 2022-01-24
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多