package com.example.client.utils;
|
|
import javax.swing.*;
|
import javax.swing.table.TableCellRenderer;
|
import java.awt.*;
|
|
public class TableViewRenderer extends JTextArea implements TableCellRenderer {
|
public TableViewRenderer() {
|
setLineWrap(true); //利用JTextArea的自动换行方法
|
setWrapStyleWord(true);
|
}
|
|
public Component getTableCellRendererComponent(JTable table, Object value,
|
boolean isSelected, boolean hasFocus, int row, int column) {
|
// 计算当下行的最佳高度
|
int maxPreferredHeight = 0;
|
for (int i = 0; i < table.getColumnCount(); i++) {
|
setText("" + table.getValueAt(row, i));
|
setSize(table.getColumnModel().getColumn(column).getWidth(), 0);
|
maxPreferredHeight = Math.max(maxPreferredHeight, getPreferredSize().height);
|
}
|
|
//设置选择行高亮
|
if (isSelected) {
|
this.setForeground(table.getSelectionForeground());
|
this.setBackground(table.getSelectionBackground());
|
} else {
|
this.setForeground(Color.BLACK);
|
this.setBackground(table.getBackground());
|
}
|
|
if (table.getRowHeight(row) != maxPreferredHeight) // 少了这行则处理器瞎忙
|
table.setRowHeight(row, maxPreferredHeight);
|
|
setText(value == null ? "" : value.toString());
|
return this;
|
}
|
|
}
|