根据值调整JScrollPane中的JList

时间:2013-04-30 13:12:35

标签: java swing jscrollpane jlist

我在JScrollPane中有一个JList:

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宽度更大,如果值很短,则宽度调整大小以匹配宽度。

有人可以指出我正确的方向吗?

2 个答案:

答案 0 :(得分:3)

  

我需要根据JList中的值调整JList / JScrollPane的大小。   等等:如果值很长,则JList / JScrollPane的宽度更大,如果是   值为short,宽度调整大小以匹配宽度

  • 关于覆盖JScrollPane.getPreferredScrollableViewportSizeJScrollPane的方法,

  • 并从JList获取更长的文字,然后使用

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

答案 1 :(得分:3)

JList的默认行为是使列表与JList中的最大字符串一样宽。如果这对您不起作用,那是因为您使用的是null布局和setBounds()。不要使用setBounds()。使用适当的布局管理器,让布局管理器完成其工作并保持代码简单。

如果要手动控制列表的宽度,可以使用:

list.setPrototypeCellValue("some string");