【问题标题】:Component array returned by getComponents() method can be changedgetComponents() 方法返回的组件数组可以更改
【发布时间】: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 变量设置其可见性状态,它会成功运行,但我无法更改其余按钮的可见性状态。

【问题讨论】:

    标签: java swing awt jbutton visibility


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 对不起。我不是那个意思。一共有三个按钮,只有一个可能不可见。
    猜你喜欢
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 2023-01-02
    相关资源
    最近更新 更多