0

所以我有这种情况:

我有一个显示一堆字符串的 JList。

但是,这些字符串真的很长,而 JList 真的很窄。这意味着字符串不适合。

我想要做的是使每个条目有两行,如下所示:

|Word word word  |
|word word wor...|

它将对第一行进行 wordWrap,然后通过剪切字符串的其余部分并将三个点以填充最大空间的方式填充剩余的内容来完成第二行。

我做什么并不重要,重要的是我必须使用 FontMetrics 来衡量所有这些东西,这样我才能让它发挥作用。这就是问题所在。

在整个getListCellRendererComponent(...)方法执行之前,不会绘制组件,因此没有图形,因此无法进行任何字体测量。

我该如何解决?

PS 我需要使用 JLabel 来获得视觉效果。

4

2 回答 2

2

该组件不会被绘制,因此没有图形,因此无法进行任何字体测量。

您不需要图形即可使用 FontMetrics。

请参阅用于 JTable 的Left Dot Renderer ,但列表渲染器的概念也应该相同。

于 2013-09-20T01:49:35.513 回答
1

需要使用 JLabels 吗?让 getListCellRendererComponent() 返回一个高度设置为 2 行并且 setLineWrap() 和 setWrapStyleWord() 都设置为 true 的 JTextArea 会容易得多。使 JTextArea 不可编辑,它看​​起来像一个 2 行 JLabel。

于 2013-09-20T01:47:36.150 回答