Java JList滚动到所选项目

For*_*ega 20 java swing scroll jlist

我有一个JList很多项目,其中一个被选中.我想滚动到JList此处的所选项目,以便用户可以快速查看选择了哪个项目.

我怎样才能做到这一点?

String[] data = {"one", "two", "three", "four", /* AND A LOT MORE */};
JList dataList = new JList(data);
JScrollPane scrollPane = new JScrollPane(dataList);
Run Code Online (Sandbox Code Playgroud)

Sbo*_*odd 52

这应该这样做:

dataList.ensureIndexIsVisible(dataList.getSelectedIndex());
Run Code Online (Sandbox Code Playgroud)


Nat*_*ate 11

或者,如果启用了多选:

dataList.scrollRectToVisible(
        dataList.getCellBounds(
            dataList.getMinSelectionIndex(), 
            dataList.getMaxSelectionIndex()
        )
);
Run Code Online (Sandbox Code Playgroud)


Sam*_*num 10

您可以使用该ensureIndexIsVisible方法

http://java.sun.com/javase/6/docs/api/javax/swing/JList.html#ensureIndexIsVisible(int)

在封闭的视口中滚动列表以使指定的单元格完全可见.这会将scrollRectToVisible调用指定单元格的边界.要使此方法起作用,JList必须位于JViewport中.