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