我正在学习使用Java Swing中的列表。在编写一个小程序以了解ListSelectionModel
和ListSelectionEvent
使用JList
的工作时,我对getFirstIndex
和getLastIndex
给出的值感到困惑。
每个文档都说 -
getFirstIndex
:
返回其选择可能已更改的第一行的索引。
和getLastIndex
返回其选择可能已更改的最后一行的索引。
现在假设我有一个这样的列表(允许单一范围选择) -
Element 1
Element 2
Element 3
Element 4
Element 5
最初,没有选择。现在,我选择了1,firstIndex给了0,lastIndex给了0,这是正确的。
现在,我按住shift并选择3.这里,firstIndex给0,lastIndex给2. lastIndex很好,但我有一些关于firstIndex值的问题 -
元素1仍然被选中且其选择没有改变,那么firstIndex 0是怎么回事?
保持上述观点,firstIndex不应为1,因为那是选择已更改的第一行(未选中 - >已选中)?
此外,该列表显示由不同背景选择的元素。现在当我做出选择时,它还会显示带边框的元素?这表明了什么?
答案 0 :(得分:2)
如果您选择Element 1
,然后按住Shift键并选择Element 3
,则可以选择从Element 1
到Element 3
的范围。 JList
应为Element 1
,Element 2
和Element 3
呈现蓝色背景(默认选择指标)。
因此ListSelectionEvent
正确地报告当前选择是从索引0到索引2。
这些索引范围代表ListModel
。
ListSelectionModel
以及ListSelectionEvent
报告当前选择,而不是选择从先前选择更改为当前选择。