我有一个自定义的单元格渲染器,可以进行单词换行,以便更多内容可以被阅读。以下是代码:
import java.awt.Color;
import java.awt.Component;
import java.awt.Insets;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.table.TableCellRenderer;
public class TextWrapCellRenderer extends JTextArea implements TableCellRenderer {
private static final long serialVersionUID = 1L;
public TextWrapCellRenderer() {
setLineWrap(true);
setWrapStyleWord(true);
setMargin(new Insets(0, 5, 0, 5));
setSelectionColor(Color.GREEN);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setText((String)value);
setSize(table.getColumnModel().getColumn(column).getWidth(),getPreferredSize().height);
setSelectionColor(Color.GREEN);
return this;
}
}
更新:单元格渲染器已经正确使用,但是当用户在JTable中选择一行时,它只会为未自定义渲染的单元格显示高亮。然而,该行中的所有其他单元格都显示高亮。这导致只有一个单元格具有白色背景,而该行的其余部分具有蓝色(在我的情况下)作为高亮的背景颜色。