在JPanel中调用setEnabled(false)的原因

Gra*_*ayR 7 java swing jpanel

我现在工作摆了一段时间,但从来没有在实践中的情况时,我不得不打电话给setEnabled(false)JPanel.不过,我有时会在一些复杂的gui中看到这样的代码.但是我真的不为人们想要使用它而不为人所知?所以,请给我的现实生活中常见的情况下,一些例子,当你需要使用setEnabled(false)JPanel.

同样在javadoc中它说:

禁用组件不会禁用其子组件.

实际上我有一个错误,因为禁用表格在JPanel调整列大小时没有显示鼠标调整大小的光标.我怀疑这里还有其他令人不快的意外.

Jav*_*a42 6

一个原因是getEnabled()将反映正确的状态.考虑一种情况,其中一些事件处理程序想要将面板标记为不再启用​​,并且在事件发生时迭代并禁用所有子组件是不谨慎的.应用程序的其他部分可能需要通过getEnabled()来测试面板的状态,以确定应用程序中不同点的操作.

我个人从来没有这样做,但是现在你问我并想到我可能会在某个时候使用它.谢谢.&& + = 1来问题.


Jav*_*a42 5

用于启用/禁用容器中所有组件的入门代码.

JPanel p = new JPanel();
p.setEnabled(state);
setEnabledAll(p, state);

public void setEnabledAll(Object object, boolean state) {
    if (object instanceof Container) {
        Container c = (Container)object;
        Component[] components = c.getComponents();
        for (Component component : components) {
            setEnabledAll(component, state);
            component.setEnabled(state);
        }
    }
    else {
        if (object instanceof Component) {
            Component component = (Component)object;
            component.setEnabled(state);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)