【发布时间】:2016-10-08 19:43:43
【问题描述】:
我想创建一个带有单元格换行的摆动表,所以我创建了以下使用 textarea 的渲染器。
问题是如果我在渲染器中使用setRowHeight 方法设置行高,它会创建一个无限循环。我想知道是否有办法实现这一点(没有无限循环的细胞线换行)。
final class RenderTextAreaMessage extends DefaultTableCellRenderer {
JTextArea textareaMessage;
@Override
public Component getTableCellRendererComponent(JTable aTable, Object aNumberValue, boolean aIsSelected,
boolean aHasFocus, int aRow, int aColumn ) {
System.out.println("aa");
String value = (String)aNumberValue;
textareaMessage = new JTextArea();
textareaMessage.setLineWrap(true);
textareaMessage.setWrapStyleWord(true);
textareaMessage.setText(value);
textareaMessage.setBorder(null);
textareaMessage.setMargin(null);
Component renderer = super.getTableCellRendererComponent(
aTable, aNumberValue, aIsSelected, aHasFocus, aRow, aColumn
);
Font fontType = textareaMessage.getFont();
FontMetrics fontMet = textareaMessage.getFontMetrics(fontType);
int fheight = fontMet.getHeight();
int lineCount = textareaMessage.getLineCount();
int rowHeight = lineCount * fheight;
aTable.setRowHeight(aRow,rowHeight+6);
return textareaMessage;
}
}
【问题讨论】:
-
您显然没有注意到table 标签上的大写消息,其中声明“请勿使用此标签;”。请阅读标签,然后再将它们贴在未来的帖子上。
标签: java swing jtable rendering tablecellrenderer