0

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

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

4

2 回答 2

3

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

  • 它关于覆盖JScrollPane.getPreferredScrollableViewportSize,方法JScrollPane

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

.

SwingUtilities.computeStringWidth(JList.getFontMetrics(JList.getFont()), maxStringToComputeTheWidth);
  • 不要使用 NullLayout
于 2013-04-30T13:16:42.383 回答
3

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

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

list.setPrototypeCellValue("some string");
于 2013-04-30T15:16:30.423 回答