3

我有一个用按钮填充的数组,我希望单个按钮在单击时更改其文本。

for (int i = 0; i<4; i++)
        {
            button[i] = new JButton ("Add");
            button[i].addActionListener(this);

            box[i] = new JComboBox();
            foodOptions.add(box[i]);
            foodOptions.add(button[i]);

        }

public void actionPerformed (ActionEvent e)
    {

        button[this].setText("I've been clicked!");

    }

当前由于类型不兼容而不起作用,什么格式合适?

4

1 回答 1

5

是的,将一个对象 , 传递给一个需要 int 的数组索引是没有意义的this,而不是你的 GUI 对象,所以我不确定你想用这个实现什么。

只需从 ActionEvent 的getSource()方法中获取对已单击的 JButton 的引用:

JButton btn = (JButton)e.getSource();
btn.setText("I've been clicked");

编辑:
你也应该避免使用this你的 ActionListener ,因为这意味着你可能让你的 GUI 类实现一个 ActionListener ,它要求可怜的类做太多事情,做太多事情。使用匿名内部类或使用 AbstractActions 会更好。

于 2013-01-14T22:15:32.533 回答