JList 不显示 JScrollpane 或更改大小



我有以下代码:

    JList<Song> list = new JList<Song>(this.lib);
    list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    list.setLayoutOrientation(JList.VERTICAL);
    list.setVisibleRowCount(3);
    list.setSize(1, 1);

    JScrollPane listScroller = new JScrollPane();
    listScroller.setViewportView(list);
    list.setSize(10, 10);
    setLayout(new FlowLayout(FlowLayout.LEFT,10,10));
    add(list);  

我不确定这里出了什么问题。当我查看 JFrame 时,我在一个框中看到列表,其中包含列表中的所有 9 个项目。我尝试弄乱尺寸,看看我是否可以让它工作,但事实并非如此。无论我将其设置为什么,大小似乎都不会改变。

我的目标是在必要时有一个垂直和水平滚动条,以及一个固定大小的JList(如果可能的话,与帧大小相比固定是最好的)。

您要将list添加到容器中,而不是listScroller

JScrollPane listScroller = new JScrollPane();
listScroller.setViewportView(list);
list.setSize(10, 10);
setLayout(new FlowLayout(FlowLayout.LEFT,10,10));
add(list); 

您应该尝试使用类似...

JScrollPane listScroller = new JScrollPane();
listScroller.setViewportView(list);
setLayout(new FlowLayout(FlowLayout.LEFT,10,10));    
//add(list); 
add(listScroller);

我想你也会发现list.setSize(10, 10);毫无意义,因为JScrollPane(实际上是视口,但让我们保持简单)有自己的布局管理器。

如果您想影响JList在需要滚动之前将显示的可见行数,您应该查看Jlist#setVisibleRowCount

每行的实际宽度和高度由ListCellRenderer确定,但您可以使用JList#setPrototypeCellValue来影响这些行的计算方式。

最新更新