2014-02-11 76 views
0

我有以下代碼: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(如果可能的話,與幀大小相比將是最好的)。

回答

4

您正在將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#setVisibleRowCount

每行的實際寬度和高度由ListCellRenderer確定,但您可以使用JList#setPrototypeCellValue來影響如何計算這些值。

+0

我改變它包括「添加(listScroller)」,但仍然沒有工作。另外,我將上面代碼的查找行中的可視行數設置爲3.它一次顯示列表中的所有內容。 –

+0

直到你提供一個[MCVE](https://stackoverflow.com/help/mcve)我建議的任何東西都是學術的,但它聽起來像你仍然將'list'直接添加到某個地方的容器 – MadProgrammer

+0

好。謝謝。我以爲我應該增加兩個。謝謝! –