Java对JTable表格的表头字体、宽度等进行设置

本文介绍如何使用Java Swing中的JTable组件设置表头样式和列宽,包括通过JTableHeader类设置字体和高度,以及通过列模型设置列宽的方法。

对表头进行设置,这里提供两种方法:

一:通过表头类(JTableHeader)设置

JTable类对象的getTableHeader()方法可以获取表头的表头类对象
下面直接看例子:

package cn.com;

import java.awt.Dimension;
import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;

public class ArrayCreateTable extends JFrame 
{
	private JTable table;
	private static final long serialVersionUID = 1L;
	
	public void init()
	{
		//初始化表格	
		this.table = new JTable(new DefaultTableModel())
		{
			//表格不允许被编辑
			public boolean isCellEditable(int row, int column)
		    {            
				return false;            	                         
		    }         
		};
			
			JTableHeader tab_header = this.table.getTableHeader();					//获取表头			
			tab_header.setFont(new Font("微软雅黑", Font.PLAIN, 15));	
			tab_header.setPreferredSize(new Dimension(tab_header.getWidth(), 30));	//修改表头的高度
			this.table.setFont(new Font("微软雅黑", Font.PLAIN, 13));
			this.table.setRowHeight(30); 											//设置表格体的行高
			DefaultTableModel model =(DefaultTableModel)this.table.getModel();		//获取表格模型
			model.setColumnIdentifiers(new Object[] {"文件名" , "文件大小(B)" , "修改时间"});//修改表头内容
			
			this.table.setModel(model);
			
			JScrollPane cen_pan = new JScrollPane();
			cen_pan.add(this.table);
			cen_pan.setViewportView(this.table);
			
			this.add(cen_pan);
			
			//窗体属性设置
			this.setVisible(true);
			this.setSize(450, 600);
			this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			this.setTitle("文件过滤器");
			this.setLocationRelativeTo(null);
		
	}
	
	public ArrayCreateTable()
	{
		init();
	}

	public static void main(String args[])
	{
		new ArrayCreateTable();
	}

}

二:通过表格的列模型设置

这个方法要通过JTable的getColumnModel()方法获取表格的列模型,然后从列模型对象的getColumn()方法获取列对象,最后通过列对象的setPreferredWidth()方法实现。

package cn.com;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;

public class ArrayCreateTable extends JFrame
{
	private JTable table;
	
	public static void main(String args[])
	{
		ArrayCreateTable win = new ArrayCreateTable();
	}
	
	public void init()
	{
		this.table = new JTable();
		JScrollPane nor_pan = new JScrollPane();
		
		DefaultTableModel model = (DefaultTableModel)this.table.getModel();
		//设置表头
		model.setColumnIdentifiers(new String[] {"ID" , "姓名" , "性别" , "年龄" , "邮箱" , "居住地", "备注"});
		
		
		int[] length = {120 , 50 , 50 , 50 , 80 , 120,100};		//表格的列宽
		
		//获取表格的 列 模型
		TableColumnModel model0 = this.table.getColumnModel();
		//设置每列的宽度
		for (int i = 0 ; i<model0.getColumnCount() ; i++)
		{
			TableColumn column = model0.getColumn(i);			//获取列对象
			column.setPreferredWidth(length[i]);				//设置列宽
			
		}
		
		this.table.setModel(model);
		nor_pan.add(this.table);
		nor_pan.setViewportView(table);											//设置一个可见视图
		
		
		this.add(nor_pan , BorderLayout.CENTER);
		
		//容器属性设置
		this.setTitle("用数组设置JTable的列名和列宽");
		this.setSize(600, 500);
		this.setVisible(true);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setResizable(false);
		
	}
	
	public ArrayCreateTable()
	{
		init();
	}

}

### 在 Java Swing JTable设置表头字体 在 Swing 的 `JTable` 组件中,表头字体可以通过自定义渲染器来设置。默认情况下,`JTable` 使用 `JTableHeader` 来显示表头,而 `JTableHeader` 又依赖于 `DefaultTableCellRenderer` 来呈现单元格内容。因此,可以通过设置表头的默认渲染器来更改字体。 以下是实现方法的详细代码示例: ```java import javax.swing.*; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.JTableHeader; import java.awt.*; public class JTableHeaderFontExample { public static void main(String[] args) { // 创建一个简单的 JTable String[] columnNames = {"列1", "列2", "列3"}; Object[][] data = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; JTable table = new JTable(data, columnNames); // 获取 JTable表头 JTableHeader header = table.getTableHeader(); // 设置表头的默认渲染器 if (header != null) { header.setDefaultRenderer(new DefaultTableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JLabel label = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); Font font = new Font("Arial", Font.BOLD, 16); // 设置自定义字体 label.setFont(font); label.setForeground(Color.BLUE); // 可选:设置字体颜色 return label; } }); } // 将表格添加到 JScrollPane 中,并将其添加到 JFrame 中 JScrollPane scrollPane = new JScrollPane(table); JFrame frame = new JFrame("JTable 表头字体示例"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(scrollPane, BorderLayout.CENTER); frame.setSize(400, 300); frame.setVisible(true); } } ``` #### 代码说明 - 通过 `table.getTableHeader()` 获取 `JTable` 的表头对象[^1]。 - 使用 `setDefaultRenderer` 方法为表头设置自定义渲染器。 - 在自定义渲染器中,通过 `setFont` 方法设置所需的字体[^2]。 - 可以同时使用 `setForeground` 方法设置字体颜色。 #### 注意事项 - 如果需要全局更改所有 `JTable` 表头字体,可以通过修改 LookAndFeel 的默认属性来实现: ```java UIManager.put("TableHeader.font", new Font("Arial", Font.BOLD, 16)); ``` - 修改 LookAndFeel 的属性会影响整个应用程序中所有 `JTable` 的表头字体
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值