Java ListCellRenderer-JLabel-String-n行

Java ListCellRenderer-JLabel-String-n行,java,swing,jlabel,jlist,listcellrenderer,Java,Swing,Jlabel,Jlist,Listcellrenderer,所以我有这样的情况: 我有一个JList,它显示一组字符串 然而,这些字符串非常长,而JList非常窄。这意味着字符串不合适 我要做的是使每个条目有两行,如下所示: |Word word word | |word word wor...| 它将对第一行进行换行,然后通过剪切字符串的其余部分并以填充最大空间的方式将三个点添加到剩余部分来完成第二行 我做什么并不重要,重要的是我必须使用FontMetrics来衡量所有这些东西,这样我才能让它发挥作用。这就是问题所在 在执行整个getListCel

所以我有这样的情况:

我有一个JList,它显示一组字符串

然而,这些字符串非常长,而JList非常窄。这意味着字符串不合适

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

|Word word word  |
|word word wor...|
它将对第一行进行换行,然后通过剪切字符串的其余部分并以填充最大空间的方式将三个点添加到剩余部分来完成第二行

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

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

我怎样才能避开它

另外,我需要使用JLabel作为视觉工具。

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

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

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

使用FontMetrics不需要图形

查看哪个用于JTable,但是对于列表呈现器,概念也应该相同

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

使用FontMetrics不需要图形

查看哪个用于JTable,但是对于列表呈现器,概念也应该相同