2009-01-03 71 views
0

我想在Java中用List和一些按鈕構建一個對話框。 列表以與按鈕相同的高度結束(大約一行),整個對話框大約有兩行高度。Java(Swing):在GridBagLayout中影響JList的高度

但是,我希望對話框更高(也許10行),JList佔用大部分空間..我已經玩過參數,但它的生活不能讓它工作。有任何想法嗎?

這裏是我當前的代碼:

//layout 
setLayout(new GridBagLayout()); 
GridBagConstraints gbc = new GridBagConstraints(); 
gbc.fill = GridBagConstraints.BOTH; 

int y = 0; 
//List 
gbc.gridx = 0; 
gbc.gridy = y; 
gbc.weighty = 3; 
gbc.weightx = 1; 
gbc.gridwidth= 3; 
add(new JScrollPane(_myList), gbc); 
_myList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 

// Buttons 
gbc.gridx = 1; 
gbc.gridy = ++y; 
gbc.gridwidth = 1; 
gbc.weighty = 0; 
add(_Save, gbc); 
gbc.gridx = 2; 
add(_Cancel, gbc); 
+0

增加了一些關於ListModel大小的新信息。 – Thorsten 2009-01-03 13:57:26

+1

哦,天哪......我一直討厭那個問題。 不要忘記看「完全Gridbag」 http://madbean.com/anim/totallygridbag/ – Uri 2009-01-05 01:27:59

+0

很酷的卡通..我可以upvote你的答案;-) – Thorsten 2009-01-10 20:59:06

回答

0

發現問題..它與佈局無關碼。

我向ListModel添加了一個null,這似乎混淆了LayoutManager。將關閉的問題,但還沒有足夠的mojo ...

0

我做了一些更多的極化左右,顯然行爲是由_myList的ListModel的項目的數量造成的。當我使用比當前使用的一個或多個項目更多的項目填充項目時,則會正確顯示列表。希望這有助於查明問題並找到解決辦法..

2

對於列表設置weightY = 1而不是3.設置爲3將使列表的空間大於列表本身。在使用GridBagLayout的時候,使用99.9%的weightX/Y值應該總是爲0或1. gridWidth也許應該是2而不是3.

1

你也可以考慮調用_myList.setVisibleRowCount(n)強制你的列表的首選大小(在可見行數)。