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

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

一:通过表头类(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对JTable表格的表头字体、宽度等进行设置)