gpt4 book ai didi

java - 如何在 JSlider 获得焦点时删除虚线?

转载 作者:行者123 更新时间:2023-12-01 19:46:36 25 4
gpt4 key购买 nike

每当 JSlider 获得焦点时,我需要删除它周围出现的虚线:

dottedLine

这是我的代码:

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;
}

我已经尝试按照建议的 here 使用 UIManager.put("Slider.focus", UIManager.get("Slider.background")); 但它对我不起作用。有什么建议吗?

最佳答案

我设法实现它的唯一方法是更改​​其 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 外观和感觉中更改它(您可能会因使用 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);

关于java - 如何在 JSlider 获得焦点时删除虚线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59118910/

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