<Swing Dev> [9] Review request for 8157065: There is no the focus border on the selected tab.

Semyon Sadetsky semyon.sadetsky at oracle.com
Fri Jun 3 17:50:48 UTC 2016



On 6/3/2016 7:58 PM, Sergey Bylokhov wrote:
> On 03.06.16 18:57, Semyon Sadetsky wrote:
>>>>> This is a public API, and it will be strange if two overloaded 
>>>>> methods
>>>>> behave differently.
>>>> I did not get it. Could you provide an example?
>>>
>>> Something like this:
>>>   JButton jb = new JButton();
>>>   SynthUI ui = (SynthUI) jb.getUI();
>>>   SynthContext context = ui.getContext(jb);
>>>   SynthPainter painter = context.getStyle().getPainter(context);
>>>   painter.paintTabbedPaneTabBorder(context, /*Graphics g*/ null, 0, 0,
>>> 10, 10, 1);
>>>   painter.paintTabbedPaneTabBorder(context, /*Graphics g*/ null, 0, 0,
>>> 10, 10, 1, JTabbedPane.LEFT);
>>>
>> And what does this prove? What in this example does not allow to the
>> first painter.paintTabbedPaneTabBorder() call, without the orientation
>> argument, to have different behavior?
>
> This is an answer to your question, it proof that this functionality 
> can be accessed via public API. And it is strange that overloaded 
> methods, which have the same spec, have different behaviour. before 
> the fix all subclasses had the same implementation(useful code or 
> noop). Actually the method with orientation flag was added in jdk6 as 
> an extension of the first method.
>
I did not understand what you meant under "extension" term 
(inheritance?). It is not true that the method has the same spec. 
Actually the spec describes the basic functionality. And GTK painter is 
not a public API, so it is not required to provide any specs. If you 
look on GTK painter implementation you can notice that the most of the 
over-ridden methods doesn't correspond to Sinth painter specs. I don't 
see the reason to change this as a part of this fix, especially that it 
is not possible because of the reason I already told you.
I still did not get why an overload method should have the same behavior 
as its associates. This is a brand new design principle I've never heard 
before.



More information about the swing-dev mailing list