Swing表格组件例题

创建可以滚动的表格

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class Example1 extends JFrame {
	public static void main(String args[]) {
		Example1 frame = new Example1();
		frame.setVisible(true);
	}
	public Example1() {
		super();
		setTitle("创建可以滚动的表格");
		setBounds(100,100,240,150);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		String[] columnNames = {"A","B"};//定义表格列数组民
		String[][] tableValues = {{"A1","B1"},{"A2","B2"},{"A3","B3"},{"A4","B5"}};
		JTable table = new JTable(tableValues,columnNames);
		JScrollPane scrollPane = new JScrollPane(table);
		getContentPane().add(scrollPane,BorderLayout.CENTER);
	}
}

创建不可滚动的表格

利用构造方法JT able(Vector rowData,Vector columnNames)创建一个表格,并直接添加到容器中

import java.awt.BorderLayout;
import java.util.Vector;

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

public class Example2 extends JFrame {
	public static void main(String args[]) {
		
		Example2 frame =new Example2();
		frame.setVisible(true);
	}
	public Example2() {
	super();
	//setTitle("创建不可滚动的表格");
	//setTitle();
	setBounds(100,100,240,150);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	Vector<String>columnNameV = new Vector<>();
	columnNameV.add("A");
	columnNameV.add("B");
	Vector<Vector<String>>tableValueV =new Vector<>();//定义表格数据向量
	for(int row =1 ;row<6;row++)
	{
		Vector<String>rowV =new Vector<>();
		rowV.add("A"+row);
		rowV.add("B"+row);
		tableValueV.add(rowV);
	}
	//创建指定表格列名和指定表格数据的表格
	JTable table = new JTable(tableValueV,columnNameV);
	//将表格添加到边界布局的中间
	getContentPane().add(table,BorderLayout.CENTER);
	JTableHeader tableHeader = table.getTableHeader();
	getContentPane().add(tableHeader,BorderLayout.NORTH);
	}	
}

运行结果
在这里插入图片描述

定义表格

设置表格的背景、选择表格时被选中的框的颜色等等

import java.awt.BorderLayout;
import java.awt.Color;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;

public class Example3 extends JFrame {
	public static void main(String args[]) {
		Example3 frame =new Example3();
		frame.setVisible(true);
	}
	public Example3() {
		super();
		setTitle("定义表格");
		setBounds(100,100,500,375);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		final JScrollPane scrollPane = new JScrollPane();
		getContentPane().add(scrollPane,BorderLayout.CENTER);
		String[] columnNames = {"A","B","C","D","E","F","G"};
		Vector<String> columnNameV = new Vector<>();
		for(int column = 0 ;column<columnNames.length;column++) {
			columnNameV.add(columnNames[column]+row);
		}
		Vector<Vector<String>> tableValueV =new Vector<>();
		for(int row=1;row<21;row++)
		{
			Vector<String> rowV =new Vector<>();
			for(int column =0;column<columnNames.length;column++)
			{
				rowV.add(columnNames[column]+row);
			}
			tableValueV.add(rowV);
		}
		JTable table = new MTable(tableValueV,columnNameV);
		//关闭表格列的自动调整功能
		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		//选择模式为单选
		table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		//被选择行的背景为黄色
		table.setSelectionBackground(Color.YELLOW);
		//被选择行的文字颜色设置为red
		table.setSelectionForeground(Color.RED);
		table.setRowHeight(30);//表格的行高为30像素
		scrollPane.setViewportView(table);
	}
	private class MTable extends JTable{
		public MTable(Vector<Vector<String>>rowData,Vector<String>columnNames) {
			super(rowData,columnNames);
		}
		public JTableHeader getTableHeader() {//定义表格头
			//获得表格头对象
			JTableHeader tableHeader = super.getTableHeader();
			tableHeader.setReorderingAllowed(false);//表格列不可以重排
			DefaultTableCellRenderer hr = (DefaultTableCellRenderer);
			tableHeader.getDefaultRenderer();
			hr.setHorizontalAlignment(DefauTableCellRenderer.CENTER);
			return tableHeader;
		}
	}
	public TableCellRenderer getDefaultRenderer(class<?>)
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章