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<?>)
}

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