On Mon, 30 Mar 2026 10:18:12 GMT, Prasanta Sadhukhan <[email protected]> 
wrote:

>> The protected methods ScrollBarUI#getTrackBounds() 
>> ScrollBarUI#getThumbBounds() have
>> become inaccessible since JRE9 which is required to override the paint 
>> method and to paint the knob/thumb so we can consider making them public.
>> 
>> A CSR will be raised if this access expansion is accepted..
>
> Prasanta Sadhukhan has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Expose API in ScrollBarUI

I don't know the original ticket author's intent, but I can think of a few use 
cases where this feature is helpful and extending BasicScrollBarUI is actually 
a nonstarter.

For ex:
A few years ago I wanted to create a tooltip-like control for sliders. The 
finished result resembles:

https://github.com/user-attachments/assets/76dc92f9-e5f3-4b8e-a32c-ff70e8407928

This was very hard/hacky, because the thumb rect was not publicly accessible. 
(I ended up calling `slider.paint(g)` with a custom Graphics2D that recorded 
paint instructions to tease out where the thumb was being painted.)

In this case I wanted to preserve the existing L&F (either AquaSliderUI or 
WindowsSliderUI), so creating a new subclass of a BasicSliderUI wouldn't work.

The same basic idea could apply to scrollbars: I might want to show a tooltip 
that points to the scrollbar thumb. Maybe as you scroll it shows some 
identifying information about what section/chapter that portion relates to.

Or I could create a subclass of JScrollBar that preserves the L&F's default 
SliderUI, but the subclass decorates it. Similar to how IntelliJ shows stripes 
in the scrollbar:
<img width="937" height="268" alt="image" 
src="https://github.com/user-attachments/assets/b2e08b64-c4f7-40a8-b931-648b23f78f97";
 />

Again: I want to preserve the L&F's SliderUI for a native-looking experience, 
so subclassing BasicSliderUI is problematic.

(Admittedly: scrollbars are a little trickier than sliders because 
AquaScrollBarUI does NOT extend BasicScrollBarUI. WindowsScrollBarUI does...)

My point is: making these methods public may be useful in cases where extending 
BasicScrollBarUI is problematic.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/30209#issuecomment-4156700746

Reply via email to