我需要删除它在JSlider上出现的虚线:
这是我的代码:
private JSlider getSlVolume() {
if (slVolume == null) {
slVolume = new JSlider();
slVolume.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent arg0) {
mP.setVolume(slVolume.getValue(), slVolume.getMaximum());
txtVol.setText(String.valueOf(slVolume.getValue()));
}
});
slVolume.setPaintLabels(true);
slVolume.setPaintTicks(true);
slVolume.setMinorTickSpacing(10);
slVolume.setMajorTickSpacing(20);
}
return slVolume;
}
我尝试按照建议的UIManager.put("Slider.focus", UIManager.get("Slider.background"));
使用here,但对我来说不起作用。有什么建议吗?
我设法实现它的唯一方法是更改其UI(通过setUI
方法)和@Override
paintFocus
方法。这取决于您使用的外观。如果使用的是Java的默认外观,它将对所有组件使用BasicUI。因此,为了更改它:
BasicSliderUI sliderUI = new BasicSliderUI(slider) {
@Override
public void paintFocus(Graphics g) {
// dont paint focus
}
};
slider.setUI(sliderUI);
但是,据我所见,您不使用这种外观。由于您没有提及正在使用的LAF,因此我将向您展示如何在Windows Look&Feel中对其进行更改(使用com.sun.java.swing.plaf.windows
包中的类可能会出现访问限制警告):
JSlider slider = new JSlider();
WindowsSliderUI s = new WindowsSliderUI(slider) {
@Override
public void paintFocus(Graphics g) {
// dont paint focus
}
};
slider.setUI(s);