我有一个简单的问题让我疯狂.
我有一个JList,并希望它的单元格根据其内容进行扩展,这是可变长度的文本.
所以我创建了一个CustomCellRenderer,如下所示:
@Override
public Component getListCellRendererComponent(final JList list, final Object value, final int index, final boolean isSelected, final boolean hasFocus)
{
final String text = (String) value;
final JTextArea ta = new JTextArea();
ta.setText(text);
ta.setFont(new Font("Dialog", Font.PLAIN, (int) Theme.FONTSIZE_TEXT));
ta.setForeground(Theme.FONTCOLOR_CONTENT);
ta.setLineWrap(true);
ta.setWrapStyleWord(true);
ta.setColumns(0);
ta.setBorder(BorderFactory.createEmptyBorder(10, Theme.PADDING, 0, 0));
return ta;
}
Run Code Online (Sandbox Code Playgroud)
但是单元格只有一个文本行高,而JTextArea的其余部分被截断.如果我加
ta.setPreferredSize(new Dimension(0, 70));
Run Code Online (Sandbox Code Playgroud)
我的行高为70,我可以看到更多JTextArea的文本,但仍然不是一切.
有没有办法让JList扩展其单元格,以便显示JTextArea的整个内容?
如何在 JList 的单个单元格内显示多行。在jtable中,是通过在表格单元格渲染器中添加一个JTextarea来实现的。同样,是否有任何代码可以为包含文本区域的 JList 添加自定义单元格渲染器?如果是,您能给我一个相同的代码片段吗?
或者您认为还有其他更好的方法可以在 Jlist 的单元格内显示多行而不是使用文本区域吗?请帮我!!