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; } }