我在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宽度更大,如果值很短,则宽度调整大小以匹配宽度。
有人可以指出我正确的方向吗?
答案 0 :(得分:3)
我需要根据JList中的值调整JList / JScrollPane的大小。 等等:如果值很长,则JList / JScrollPane的宽度更大,如果是 值为short,宽度调整大小以匹配宽度
关于覆盖JScrollPane.getPreferredScrollableViewportSize
,JScrollPane
的方法,
并从JList
获取更长的文字,然后使用
SwingUtilities.computeStringWidth(JList.getFontMetrics(JList.getFont()), maxStringToComputeTheWidth);
答案 1 :(得分:3)
JList的默认行为是使列表与JList中的最大字符串一样宽。如果这对您不起作用,那是因为您使用的是null布局和setBounds()。不要使用setBounds()。使用适当的布局管理器,让布局管理器完成其工作并保持代码简单。
如果要手动控制列表的宽度,可以使用:
list.setPrototypeCellValue("some string");