getComponents() 方法返回的组件数组可以更改

Posted

技术标签:

【中文标题】getComponents() 方法返回的组件数组可以更改【英文标题】:Component array returned by getComponents() method can be changed 【发布时间】:2017-07-16 17:08:53 【问题描述】:

我正在尝试将按下的按钮设置为不可见,并将其余按钮设置为可见。我使用getComponents() 方法来获取三个按钮并更改其可见性状态,但出现了问题。

@Override
public void actionPerformed(ActionEvent e) 
    Component button = ((Component) e.getSource());

    for (Component component : view.getComponents()) 
        if (component instanceof JButton) 
            if (component.getName().equals(button.getName())) 
                System.out.format("Pressed button: %s%n", button.getName());
                component.setVisible(false);
             else 
                component.setVisible(true);
            
        
    

    java.awt.Toolkit.getDefaultToolkit().beep();

    view.revalidate();

    for (Component component : view.getComponents()) 
        System.out.format("%s is visible: %s%n", component.getName(), component.isVisible());
    

我使用format() 方法来获取组件的可见性状态。启动后程序按钮不会消失,但状态正确。

如果我使用button 变量设置其可见性状态,它会成功运行,但我无法更改其余按钮的可见性状态。

【问题讨论】:

【参考方案1】:

我正在尝试将按下的按钮设置为不可见

你有被点击的按钮,所以让它不可见。

@Override
public void actionPerformed(ActionEvent e) 
    Component button = ((Component) e.getSource());
    button.setVisible(false);
    java.awt.Toolkit.getDefaultToolkit().beep();

无需遍历面板上的所有按钮。

【讨论】:

对不起。我不是那个意思。一共有三个按钮,只有一个可能不可见。

以上是关于getComponents() 方法返回的组件数组可以更改的主要内容,如果未能解决你的问题,请参考以下文章

当从数组呈现ReactJS组件时,组件的onChange函数将传递最后一个参数值

在 JPanel.getComponents() 中循环时如何获取 JButton 属性

Java 在 JFrame 中设置/获取所有组件的文本

获取组件对象的组件?

获取 JPanel 中组件的类型

小功能⭐️获取Unity游戏物体上,所挂载组件的名称