Java Jlist上的滚动条
下面是我创建Jlist并使用action listener填充它的代码 首先,我使用了一个字符串数组来填充Jlist,并使用了滚动条。 然后为了升级Jlist,我需要将Jlist的模式更改为DefaultListModel,一旦更改,我的滚动条就丢失了 我不知道出了什么问题 有人能帮我吗Java Jlist上的滚动条,java,swing,jlist,Java,Swing,Jlist,下面是我创建Jlist并使用action listener填充它的代码 首先,我使用了一个字符串数组来填充Jlist,并使用了滚动条。 然后为了升级Jlist,我需要将Jlist的模式更改为DefaultListModel,一旦更改,我的滚动条就丢失了 我不知道出了什么问题 有人能帮我吗 private Component makeListView() { final DefaultListModel<String> listModel = new Default
private Component makeListView() {
final DefaultListModel<String> listModel = new DefaultListModel<String>();
final JList<String> list = new JList<String>(listModel);
list.setModel(listModel);
updateCourseListPanel(listModel);
notifyObserverInModelForClickingOnListItem(list);
list.setPreferredSize(getSize());
list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
list.setVisibleRowCount(-1);
list.setFixedCellWidth(80);
JScrollPane listScroller = new JScrollPane(list);
listScroller.setPreferredSize(getMaximumSize());
setVisible(true);
return list;
}
很难从您的代码片段中分辨出来,因为您没有显示调用它的代码:从表面上看,问题是您返回的是列表,而不是它添加到的滚动窗格 更深层次的问题是,由于缺乏细节,您似乎只是在猜测:-在需要更新数据时重新创建列表。更好的方法是将列表及其模型的创建与其更新分开,并仅根据需要更新模型:
private Component makeListView() {
final DefaultListModel<String> listModel = new DefaultListModel<String>();
final JList<String> list = new JList<String>(listModel);
list.setModel(listModel);
list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
list.setFixedCellWidth(80);
JScrollPane listScroller = new JScrollPane(list);
return listScroller;
}
private void update(Jlist list) {
updateCourseListPanel(list.getModel());
notifyObserverInModelForClickingOnListItem(list);
}
顺便说一句,永远不要调用任何setXXSize方法