java - 按钮数组,仅使一个按钮在单击时更改其文本

标签 java swing jbutton

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

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!");

    }

当前因为不兼容的类型不工作,什么格式合适?

最佳答案

是的,将对象 this 传递到需要 int 的数组索引中是没有意义的,而不是您的 GUI 对象,所以我不确定您试图通过这个。

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

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

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

关于java - 按钮数组,仅使一个按钮在单击时更改其文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14327709/

相关文章:

Java:JButton 和 ArrayList:从 ArrayList 添加到 JPanel

Java - ol' 透明 JFrame,没有限制库

Java JTable : Setting a primary column to always sort by first

java - 使用 SSCCE 在 JPanel 上绘制新节点

java - 如何在javafx中使用ArcGis

java - 如何阻止 JButton 执行无限循环

java动态调整图像大小以适应gridlayout中的网格

java - 如何从war打包的jar中读取PNG

java - 策略模式: How to make classes with constructors as enums?

java - 将字节转换为字符串再转换为字节