我試圖把一個JList
一個JScrollPane
內,並將它按字母順序列出垂直列中的條目是這樣的:JList - 使用垂直滾動條而不是水平垂直摺疊方向?
A D G
B E H
C F
然而,當JList
用完的空間來顯示更多的條目,我像JScrollPane
滾動只有在垂直方向。
這個工程,當我用VERTICAL_WRAP
。但是,它似乎是當我使用垂直包裝我得到一個水平滾動條,當我使用HORIZONTAL_WRAP
我得到我想要的滾動條,但項目被放置在一個我不喜歡的順序。我可以吃我的蛋糕,也可以吃嗎?這是我想要做的一個簡單的例子。
這是最接近我能得到的,但我希望能夠垂直滾動,同時保持垂直字母順序。
public class ScrollListExample {
static List<String> stringList = new ArrayList<String>();
static {
for (int i = 0; i < 500; i++) {
stringList.add("test" + i);
}
}
public static void main(final String[] args) {
final JFrame frame = new JFrame();
final Container contentPane = frame.getContentPane();
final JList list = new JList(stringList.toArray());
list.setLayoutOrientation(JList.VERTICAL_WRAP);
list.setVisibleRowCount(0);
final JScrollPane scrollPane = new JScrollPane(list);
contentPane.add(scrollPane);
frame.setPreferredSize(new Dimension(800, 400));
frame.pack();
frame.setVisible(true);
}
}
一個解決方案我已經,雖然爲: 如果單元格大小已知我可以創建一個組件偵聽器,並監聽resize事件。當事件被觸發時,我可以計算所需的行數,以防止水平滾動。這看起來像一個黑客,我不知道它如何可以處理可變大小的文本組件。
有趣的問題+1 – mKorbel 2012-02-02 19:41:56
的原因,你正在使用的時候'越來越水平滾動條「VERTICAL_WRAP」是'VERICAL_WRAP =>表示單元垂直然後水平流動的「報紙樣式」佈局。「因此,如果單元格將垂直流動,並且由於尺寸的原因,輸出將從底部纏繞,因此它將開始水平填充。因此一個水平滾動條。 – RanRag 2012-02-02 20:09:01
這是有道理的,但我大部分嘗試調整內部組件的嘗試都沒有達到我預期的效果。我將如何強制顯示垂直滾動條,而不是水平滾動條?是否有我需要調整大小的特定組件? – Lockyer 2012-02-02 20:23:46