我想渲染一个JTable
组件的单元格来支持换行,所以我在单元格中使用JTextarea
,因为文本区域允许换行。这是我的代码:
//Render column with header Person
table.getColumn("Person").setCellRenderer(new RenderRedGreen());
final class RenderRedGreen extends DefaultTableCellRenderer {
JTextArea textarea;
@Override public Component getTableCellRendererComponent(
JTable aTable, Object aNumberValue, boolean aIsSelected,
boolean aHasFocus, int aRow, int aColumn )
{
String value = (String)aNumberValue;
textarea = new JTextArea();
aTable.add(textarea);
textarea.setLineWrap(true);
textarea.setWrapStyleWord(true);
textarea.setText(value);
aTable.setRowHeight(90);
if (aNumberValue == null) return this;
Component renderer = super.getTableCellRendererComponent(
aTable, aNumberValue, aIsSelected, aHasFocus, aRow, aColumn
);
if (value.equals("Me"))
renderer.setForeground(Color.red);
else
renderer.setForeground(Color.black);
return this;
}
}
问题是文本没有被包装,所以我无法完全看到长文本。我做错了什么?
答案 0 :(得分:0)
这些代码行可以帮助您包装数据并正确显示多行:
textarea.setWrapStyleWord(true);
textarea.setLineWrap(true);
DefaultCaret caret = (DefaultCaret) textarea.getCaret();
caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);