<Swing Dev> [11] Review Request: JDK-5076761 : JList.setSelectedValue(null, ...) doesn't do anything
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Sat Jan 6 06:16:22 UTC 2018
On 05/01/2018 18:01, Semyon Sadetsky wrote:
> Can you explain what is wrong with the suggested approach? It is
> flexible to handle both null and non-null containing JList.
Because it is wrong direction try to support some approach which is
undefined behavior. The null has a special meaning in
JList.getSelectedValue/setSelectedValue() as well as in a few other
methods mentioned below. The usage of unspecified null values may result
in a run time exception either immediately or at some later time.
>
> On 01/05/2018 04:25 PM, Sergey Bylokhov wrote:
>> I doubt that support of null values in the data model is intentional
>> because JList is "A component that displays a list of *objects* and
>> allows the user to select one or more items."
>>
>> The null behavior was not specified and work in most cases because
>> some of the getXXX methods in ListModel sub-classes and JList have a
>> special meaning of null:
>>
>> JList.getSelectedValue(): Returns {@code null} if there is no selection.
>> ListModel.getElementAt(int index): In most cases implemented to return
>> null if index is incorrect.
>>
>> Similar method TableModel.getValueAt(int,int) is also usually
>> implemented to return null if value is not found or some error occured.
>>
>> JComboBox.setSelectedItem(): use <code>null</code> to clear the selection
>> ComboBoxModel.setSelectedItem(): <code>null</code> to clear the selection
>> ComboBoxModel.getSelectedItem(): <code>null</code> if there is no
>> selection
>>
>> So I suggest to follow initial intention here, because it is too late
>> to add validation of the values.
>> - The null value in get() will mean no-selection.
>> - The null value passed to set() will clear selection.
>>
>> On 05/01/2018 02:15, Pankaj Bansal wrote:
>>> Hi Semyon/Sergey,
>>>
>>> Yes, JList can contain null elements as it can be added to data
>>> model. I think this changes a lot in this bug. I think the selection
>>> needs to be cleared when the object passed is not present in the
>>> list, irrespective of it being null or not. I have made code changes.
>>> Please have a look.
>>>
>>> Webrev: http://cr.openjdk.java.net/~pbansal/5076761/webrev.02/
>>>
>>> Regards,
>>> Pankaj Bansal
>>>
>>> -----Original Message-----
>>> From: Semyon Sadetsky
>>> Sent: Friday, January 5, 2018 6:59 AM
>>> To: Pankaj Bansal; swing-dev at openjdk.java.net
>>> Subject: Re: <Swing Dev> [11] Review Request: JDK-5076761 :
>>> JList.setSelectedValue(null, ...) doesn't do anything
>>>
>>> Hi Pankaj,
>>>
>>> Can JList contain null value?
>>>
>>> --Semyon
>>>
>>>
>>> On 01/02/2018 11:26 PM, Pankaj Bansal wrote:
>>>> Hi Sergey,
>>>>
>>>> Thanks for the review.
>>>>
>>>> I have made the suggested changes. Please have a look.
>>>> webrev: http://cr.openjdk.java.net/~pbansal/5076761/webrev.01/
>>>>
>>>> Regards,
>>>> Pankaj Bansal
>>>>
>>>>
>>>> -----Original Message-----
>>>> From: Sergey Bylokhov
>>>> Sent: Wednesday, January 3, 2018 3:31 AM
>>>> To: Pankaj Bansal; swing-dev at openjdk.java.net; Prasanta Sadhukhan
>>>> Subject: Re: [11] Review Request: JDK-5076761 :
>>>> JList.setSelectedValue(null, ...) doesn't do anything
>>>>
>>>> Hi, Pankaj.
>>>> The fix looks fine, but I suggest to update the spec as well and
>>>> describe the behavior if "null" value is passed.
>>>>
>>>> On 02/01/2018 02:07, Pankaj Bansal wrote:
>>>>> Hi All,
>>>>>
>>>>> Please review the fix for JDK 11.
>>>>>
>>>>> Bug:
>>>>>
>>>>> https://bugs.openjdk.java.net/browse/JDK-5076761
>>>>>
>>>>> Webrev:
>>>>>
>>>>> http://cr.openjdk.java.net/~pbansal/5076761/webrev.00/
>>>>>
>>>>> Issue:
>>>>>
>>>>> When setSelectedValue is called on JList with null object, it should
>>>>> clear all selection. But it is not doing anything.
>>>>>
>>>>> Fix:
>>>>>
>>>>> In setSelectedValue if the object is null, the setSelectedIndex is
>>>>> called with -1. but this does not clear the selection. We should be
>>>>> calling clearSelection instead of SetSelectedIndex.
>>>>>
>>>>> Regards,
>>>>>
>>>>> Pankaj Bansal
>>>>>
>>>>
>>>> --
>>>> Best regards, Sergey.
>>>
>>
>>
>
--
Best regards, Sergey.
More information about the swing-dev
mailing list