如何将值从按钮传递到另一个类

时间:2014-05-25 13:27:33

标签: java swing event-handling

场景:我有一系列jbuttons(在运行时创建),每个jbuttons都在他的标签中有一个数字。使用以下代码创建按钮:

    for (int i = 1; i <= tablesNumber; i++) {
        JButton button = new JButton(Integer.toString(i));
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                new Orders().setVisible(true);
            }
        });
        jPanel1.add(button);
    }

我需要传递给班级订购触发事件的按钮的编号,例如如果用户点击第5号按钮,我需要将值5传递给订单。 我怎样才能做到这一点? 感谢。

1 个答案:

答案 0 :(得分:1)

从你的问题:

  

传递给班级订购触发事件的按钮号码

您可以捕获循环迭代变量i,以便可以在匿名事件处理程序中使用它。为了论证,我假设您想将数字传递给构造函数,但是您可以随意使用它:

for (int i = 1; i <= tablesNumber; i++) {
    final int t = i; // <-- NEW LINE HERE
    JButton button = new JButton(Integer.toString(i));
    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            new Orders(t).setVisible(true); // <-- USE t here however you need to
        }
    });
    jPanel1.add(button);
}

如果没有final int t = i,您可能会遇到编译器错误“无法引用在不同方法中定义的内部类中的非最终变量”。这是因为捕获变量(即来自匿名类'方法中使用的外部作用域的变量必须是final(或者实际上是最终的 - 从SE 8开始,这种行为略有改变)。