import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.*;
/**
* 表头渲染
*/
public class TableHeaderRender {
public static void main(String[] args) {
JFrame jf = new JFrame("表头渲染");
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// 创建内容面板
JPanel panel = new JPanel();
// 表头(列名)
String[] columnNames = {"序号", "姓名", "身高", "体重"};
// 表格所有行数据
Object[][] rowData = {
{1, "张三", 180, 80 },
{2, "李四", 170, 80},
{3, "王五", 175, 70}
};
// 创建一个表格,指定 表头 和 所有行数据
JTable table = new JTable(rowData, columnNames);
// 设置滚动面板视口大小(超过该大小的行数据,需要拖动滚动条才能看到)
table.setPreferredScrollableViewportSize(new Dimension(500, 400));
// 把表格放到滚动面板中(表头将自动添加到滚动面板顶部)
JScrollPane scrollPane = new JScrollPane(table);
// 添加滚动面板到内容面板
panel.add(scrollPane);
// 设置 内容面板 到 窗口
jf.setContentPane(panel);
jf.pack();
jf.setLocationRelativeTo(null);
jf.setVisible(true);
}
/**
* 表头渲染器
*/
private static class Renderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
final Border border = BorderFactory.createEmptyBorder(0, 5, 0, 0);
JLabel label;
// 创建具有指定文本、图像和水平对齐方式的JLabel
label = new JLabel(value.toString(), null, JLabel.LEFT);
// 设置文本在图像前面
label.setHorizontalTextPosition(JLabel.LEFT);
// 设置边框
label.setBorder(border);
// 设置字体颜色
setForeground(Color.RED);
// 设置提示文本
label.setToolTipText("提示文本");
return label;
}
}
// 设置表头渲染器
table.getTableHeader().setDefaultRenderer(new Renderer());
鼠标移动到表头位置,出现悬浮提示文本
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.*;
/**
* 表头渲染
*/
public class TableHeaderRender {
public static void main(String[] args) {
JFrame jf = new JFrame("表头渲染");
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// 创建内容面板
JPanel panel = new JPanel();
// 表头(列名)
String[] columnNames = {"序号", "姓名", "身高", "体重"};
// 表格所有行数据
Object[][] rowData = {
{1, "张三", 180, 80 },
{2, "李四", 170, 80},
{3, "王五", 175, 70}
};
// 创建一个表格,指定 表头 和 所有行数据
JTable table = new JTable(rowData, columnNames);
// 设置表头渲染器
table.getTableHeader().setDefaultRenderer(new Renderer());
// 设置表格内容颜色
table.setForeground(Color.BLACK); // 字体颜色
table.setFont(new Font(null, Font.PLAIN, 14)); // 字体样式
table.setSelectionForeground(Color.DARK_GRAY); // 选中后字体颜色
table.setSelectionBackground(Color.LIGHT_GRAY); // 选中后字体背景
table.setGridColor(Color.GRAY); // 网格颜色
// 设置表头
table.getTableHeader().setFont(new Font(null, Font.BOLD, 14)); // 设置表头名称字体样式
table.getTableHeader().setForeground(Color.RED); // 设置表头名称字体颜色
table.getTableHeader().setResizingAllowed(false); // 设置不允许手动改变列宽
table.getTableHeader().setReorderingAllowed(false); // 设置不允许拖动重新排序各列
// 设置行高
table.setRowHeight(30);
// 第一列列宽设置为40
table.getColumnModel().getColumn(0).setPreferredWidth(40);
// 设置滚动面板视口大小(超过该大小的行数据,需要拖动滚动条才能看到)
table.setPreferredScrollableViewportSize(new Dimension(500, 400));
// 把表格放到滚动面板中(表头将自动添加到滚动面板顶部)
JScrollPane scrollPane = new JScrollPane(table);
// 添加滚动面板到内容面板
panel.add(scrollPane);
// 设置 内容面板 到 窗口
jf.setContentPane(panel);
jf.pack();
jf.setLocationRelativeTo(null);
jf.setVisible(true);
}
/**
* 表头渲染器
*/
private static class Renderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
final Border border = BorderFactory.createEmptyBorder(0, 5, 0, 0);
JLabel label;
// 创建具有指定文本、图像和水平对齐方式的JLabel
label = new JLabel(value.toString(), null, JLabel.LEFT);
// 设置文本在图像前面
label.setHorizontalTextPosition(JLabel.LEFT);
// 设置边框
label.setBorder(border);
// 设置字体颜色
setForeground(Color.RED);
// 设置提示文本
label.setToolTipText("提示文本");
return label;
}
}
}