2013-04-30 43 views
0

我有一個JList在JScrollPane:調整大小的JList在JScrollPane中,基於價值

JList list = new JList(); 
JScrollPane scrollPane = new JScrollPane(list, 
        JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
        JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
scrollPane.setBounds(0, 0, 201,75); 

我需要根據在JList中的值來調整JList中/ JScrollPane中。等等:如果值很長,JList/JScrollPane寬度更大,並且如果值較短,則寬度調整爲匹配寬度。

任何人都可以請我指出正確的方向嗎?

回答

3

我需要根據JList中的值調整JList/JScrollPane的大小。 ETC:如果值是長的,JList的/ JScrollPane的寬度更,並且如果 值短的寬度調整大小以匹配寬度

  • 其關於覆蓋JScrollPane.getPreferredScrollableViewportSize,對於JScrollPane方法,

  • 並從JList獲得更長的文字,然後用

SwingUtilities.computeStringWidth(JList.getFontMetrics(JList.getFont()), maxStringToComputeTheWidth); 
  • 不要使用NullLayout
+0

+1,FON沒有使用空佈局。 – camickr 2013-04-30 15:16:47

3

的JList中的默認行爲是上榜的一樣寬,在JList中的最大的字符串。如果這不適合你,那是因爲你正在使用空佈局和setBounds()。不要使用setBounds()。使用合適的佈局管理器,讓佈局管理器完成工作,保持代碼簡單。

如果你想手動控制列表的寬度,那麼你可以使用:

list.setPrototypeCellValue("some string");