java - 将变量传递给 Java 中的 ActionListener

标签 java swing jbutton actionlistener

我有类似下面的代码:

    for(int i=0;i<10;i++){
        button=new JButton(buttons[i]);
        button.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                setPage(i);
            }
        });
        menu.add(button);
    }

但是,变量 i 没有在 ActionListener 类的范围内定义。如何传递变量?

最佳答案

一种完全不同的方法是向按钮添加一个属性,然后在您的 Action 监听器中检索该属性。 例如。

button=new JButton(buttons[i]);
button.putClientProperty( "page", i );
button.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e) {
      setPage((Integer)((JButton)e.getSource()).getClientProperty( "page" ));
   }
});

关于java - 将变量传递给 Java 中的 ActionListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11037622/

相关文章:

Java 正则表达式接受任何内容但不接受尖括号

java - 检测逻辑连接器的最佳方法

java - 使用 Swing 在 Pane 中选择文件

java - 我的 (Java/Swing) MouseListener 没有监听,请帮我找出原因

Java Swing JTabbedPane 将 JPanel 添加到选项卡然后修改它

输入 'done' 时 Java 终止数组

java - 一个大数组会完全用Java存储在内存中吗?

java - 关于 ActionPerformed 和 ActionEvent

java - 如何向 JRadioButton 标签添加 Action 监听器?

java - 从 Action 监听器调用 swing JPanel