gpt4 book ai didi

java - 为什么不可能有效地覆盖 Swing 的 setEnabled?

转载 作者:行者123 更新时间:2023-12-03 19:04:42 26 4
gpt4 key购买 nike

我的目标是防止 Swing 中的 setEnabled 使我的 JLabel 和其他 JComponent 变灰而变得不可读。 (这样做的原因是我有另一种解决方案来指示启用状态 - 图标。)

根据对我之前的一个问题的 SO 回答,我决定重写 setEnabled。然而正如您将在下面发现的那样,尽管没有调用 super(toggle),但我对 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;
}

最佳答案

启用/禁用 外观由组件的 UI 委托(delegate)控制,用于选定的外观。例如,按钮的委托(delegate)通常派生自 javax.swing.plaf.ButtonUI。 .

关于java - 为什么不可能有效地覆盖 Swing 的 setEnabled?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9754631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com