现在的位置: 首页 > 综合 > 正文

Swing 之 JTable学习(一)

2013年02月21日 ⁄ 综合 ⁄ 共 2583字 ⁄ 字号 评论关闭
package com.ethan.table;

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;
import javax.swing.table.TableCellRenderer;

public class ArrayCreateTableFrame extends JFrame {
	private JTable table;
	
	public ArrayCreateTableFrame() {
		super();
		
		setTitle("使用数组创建表格");
		setBounds(100,100,360,200);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		final JScrollPane scrollPane = new JScrollPane();
		
		getContentPane().add(scrollPane,BorderLayout.CENTER);
		
		String[] columnNames = {"A","B"};
		
		String[][] tableValues = {{"a1","b1"},{"a1","b1"},{"a1","b1"},{"a1","b1"},{"a1","b1"},{"a1","b1"},{"a1","b1"}};
		
		Vector columnNameV = new Vector();
		for(int i=0;i<columnNames.length;i++) {
			columnNameV.add(columnNames[i]);
		}
		
		Vector tableValueV = new Vector();
		
		for(int i=0;i<tableValues.length;i++) {
			Vector v = new Vector();
			
			for(int j=0;j<tableValues[i].length;j++) {
				v.add(tableValues[i][j]);
			}
			
			tableValueV.add(v);
		}
		table = new MTable(tableValueV,columnNameV);
		//关闭自动调整,产生水平滚动条
		//table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		
		//可以连续选择多行,本身就可以.下边的代码不能隔选,只能连着
		//table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
		
		table.setSelectionBackground(Color.YELLOW);
		table.setForeground(Color.RED);
		table.setRowHeight(30);
		scrollPane.setViewportView(table);
		
		/*
		 * Vector columnNameV = new Vector();
		 * columnNameV.add("a");
		 * columnNameV.add("b");
		 * 
		 * Vector tableValueV = new Vector();
		 * for(int row=1;row<6;row++) {
		 * 	Vector rowV = new Vector();
		 * 	rowV.add("a"+row);
		 *  rowV.add("b"+row);
		 *  
		 *  tableValueV.add(rowV);
		 * }
		 */
		
	}
	
	public static void main(String args[]) {
		ArrayCreateTableFrame a = new ArrayCreateTableFrame();
		a.setVisible(true);
		
	}
	
	//JTable可以edit
	private class MTable extends JTable {
		public MTable(Vector rowData, Vector columnNames) {
			super(rowData,columnNames);
		}
		@Override
		public boolean isCellEditable(int row, int column) {
			// TODO Auto-generated method stub
			return false;//双击不能编辑
		}
		@Override
		public JTableHeader getTableHeader() {
			// TODO Auto-generated method stub
			JTableHeader tableHeader = super.getTableHeader();
			//设置是否允许调换列的位置,默认true
			tableHeader.setReorderingAllowed(false);
			
			//设置列名居中显示
			DefaultTableCellRenderer cr = (DefaultTableCellRenderer) tableHeader.getDefaultRenderer();
			//内容居中,默认靠左
			cr.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
			return tableHeader;
		}
		@Override
		public TableCellRenderer getDefaultRenderer(Class<?> columnClass) {
			// TODO Auto-generated method stub
			DefaultTableCellRenderer cr = (DefaultTableCellRenderer) super.getDefaultRenderer(columnClass);
			//设置内容居中
			cr.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
			return cr;
		}
		
	}
}

抱歉!评论已关闭.