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

时间:2017-02-25 23:24:52

标签: java swing awt jbutton visibility

我试图将按下的按钮设置为不可见,并将其余部分设置为可见。我使用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 个答案:

答案 0 :(得分:1)

  

我试图将按下的按钮设置为不可见

您有点击的按钮,只是让它不可见。

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

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