我的目標是防止Swing中的setEnabled將我的JLabels和其他JComponents灰化成不可讀。 (其原因是我有另一種解決方案來指示啓用狀態 - 圖標。)爲什麼不可能有效地覆蓋Swing的setEnabled?
基於對我之前的問題之一的答案,我決定覆蓋setEnabled。然而,正如你將在下面發現的,儘管沒有任何超級(切換)的調用,但我的重寫setEnabled仍然會導致組件變灰。有人能解釋爲什麼看起來不可能有效地覆蓋setEnabled的行爲嗎?
public class ToggleLabel extends JLabel {
private boolean toggle;
public ToggleLabel(String text, boolean toggle) {
super(text);
setEnabled(toggle);
}
public ToggleLabel(Icon image, boolean toggle) {
super(image);
setEnabled(toggle);
}
@Override
public void setEnabled(boolean toggle) {
this.toggle = toggle;
System.out.println("I am used");
}
@Override
public boolean isEnabled() {
return toggle;
}
}
而不是更改啓用狀態,它是否有意義,只是_not show_ the [相關組件](http://stackoverflow.com/q/9707470/230513)? – trashgod 2012-03-18 03:44:56