我现在工作摆了一段时间,但从来没有在实践中的情况时,我不得不打电话给setEnabled(false)在JPanel.不过,我有时会在一些复杂的gui中看到这样的代码.但是我真的不为人们想要使用它而不为人所知?所以,请给我的现实生活中常见的情况下,一些例子,当你需要使用setEnabled(false)的JPanel.
同样在javadoc中它说:
禁用组件不会禁用其子组件.
实际上我有一个错误,因为禁用表格在JPanel调整列大小时没有显示鼠标调整大小的光标.我怀疑这里还有其他令人不快的意外.
一个原因是getEnabled()将反映正确的状态.考虑一种情况,其中一些事件处理程序想要将面板标记为不再启用,并且在事件发生时迭代并禁用所有子组件是不谨慎的.应用程序的其他部分可能需要通过getEnabled()来测试面板的状态,以确定应用程序中不同点的操作.
我个人从来没有这样做,但是现在你问我并想到我可能会在某个时候使用它.谢谢.&& + = 1来问题.
用于启用/禁用容器中所有组件的入门代码.
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)