Java 为JButton获取显式设置的前景色
我有一个自定义ButtonUI类来绘制按钮。在绘制文本之前,paint方法检查按钮是否设置了自定义颜色,以便使用该颜色而不是UIDefaults#get(“button.foreground”) 查看java.awt.Component类会产生一个问题:Java 为JButton获取显式设置的前景色,java,swing,look-and-feel,jbutton,Java,Swing,Look And Feel,Jbutton,我有一个自定义ButtonUI类来绘制按钮。在绘制文本之前,paint方法检查按钮是否设置了自定义颜色,以便使用该颜色而不是UIDefaults#get(“button.foreground”) 查看java.awt.Component类会产生一个问题: public Color getForeground() { Color foreground = this.foreground; if (foreground != null) { return foregr
public Color getForeground() {
Color foreground = this.foreground;
if (foreground != null) {
return foreground;
}
Container parent = this.parent;
return (parent != null) ? parent.getForeground() : null;
}
因此,检查按钮的getForeground()是否为null并没有多大帮助,因为它将返回按钮所在组件的前景色
问题是:如何检查按钮是否已明确设置为自定义前景色
将PropertyChangedListener放在按钮上可能是一个解决方案,但我认为一定有一个更简单的方法。在
组件中可以找到isBackgroundSet()
方法。重写该方法并让它返回这个。前台;或者添加一个新的返回该值的方法。抱歉,键入时按错了按钮,现在完成。您只能在生成按钮时执行此操作。这可能不是他想要的。
public Color getForeground() {
Color foreground = this.foreground;
if (foreground != null) {
return foreground;
}
Container parent = this.parent;
return (parent != null) ? parent.getForeground() : null;
}