我正在开发具有自定义 Track Rectangle 的自定义 JSlider。我希望能够在第一次声明滑块时设置轨道矩形的颜色。
这是我所拥有的一个片段(这些类在同一个包中的不同文件中):
public class NewSlider extends JSlider {
Color kolor;
public NewSlider (Color k) {
kolor = k;
}
public void updateUI() {
setUI(new NewSliderUI(this, kolor);
updateLabelUIs();
}
}
public class NewSliderUI extends BasicSliderUI {
Color sliderColor = Color.BLACK;
public NewSliderUI (JSlider b, Color k) {
super(b);
sliderColor = k;
}
}
在上面的代码中,“kolor”最初为 null,当 NewSliderUI 尝试使用它时会导致错误。似乎该updateUI()
方法在其他任何事情之前被调用。然后调用 NewSlider 构造函数。我尝试了很多方法,但因为 updateUI() 似乎先于其他任何东西运行,所以我添加到 NewSlider 类中的任何内容似乎都无关紧要。
如果我硬编码一个颜色(即。setUI(new NewSliderUI(this, Color.BLACK);
),那么它可以工作,但是为每种颜色设置不同的类似乎很愚蠢。
谢谢。