问题
How can the size of the thumb be configured for a JSlider
?
With the defaults, and a range for the JSlider
of 256, the thumb is only a few pixels wide, which makes it quite difficult to control with a mouse.
I am using the Windows 7 look and feel and the slider looks like this:
Enabling paintTicks
with a major and minor tick spacing of 0 gives a better (although not preferred) display:
The desired display is shown in the following image - taken from a native Windows 7 application:
回答1:
You could try customizing the JSlider
Look and Feel as follows:
UIDefaults defaults = UIManager.getDefaults();
defaults.put("Slider.thumbHeight", HEIGHT_AS_INTEGER); // change height
defaults.put("Slider.thumbWidth", WIDTH_AS_INTEGER); // change width
Reference:
- Customizing a JSlider Look and Feel
It's important to note that these changes will apply to all JSlider
instances, which may make this approach undesirable.
回答2:
This depends on the SliderUI, which might have hard coded sizes. If not, using mre`s suggestion would be a way to go, if you want the same thumb size for all sliders.
Alternatively to setting the defaults for a UI that uses them, you could define a different UI for a special slider (e.g. myslider.setUI(new MyCustonSliderUI())
), but be aware that that has its own drawbacks.
来源:https://stackoverflow.com/questions/7148605/set-the-size-of-a-jslider-thumb