目前,使用单个方法调用禁用包含其所有组件的JPanel,我必须覆盖其禁用方法,如下所示:
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
Component[] components = getComponents();
if (components != null && components.length > 0) {
int count = components.length;
for (int i = 0; i < count; i++)
components[i].setEnabled(enabled);
}
}
有没有标准方法可以这样做?而是提供我自己的实现?
答案 0 :(得分:1)
首先,您可以轻松简化该代码:
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
for (Component component : getComponents())
component.setEnabled(enabled);
}
}
这当然会破坏组件的任何个别启用状态。
通常禁用的组件看起来很糟糕,顶部的玻璃窗格可以停止指针输入,也许还可以添加更微妙的视觉效果。
您可以采用模型方法。创建每个组件时,它会将启用状态委派给模型。然后,您只需要一次状态更改即可更新所有组件。这使您可以拥有任意组并促进更复杂的逻辑。