GUI图形编程(12)---JTable的基本组成

表格:JTable

表头   +  内容;

表头的表示:String[]               内容的表示:Object[][]

1、创建一张table的方式
            JTable(Object[][] rowData, Object[] columnNames)
            •JTable(Vector rowData, Vector columnNames)
2、将table添加到容器中面板
            ① 使用JScollPane   直接将table作为一个整体添加进去   (最常用的)
            ②使用普通的JPanel   第一步获取table的heard   添加heard到panel
            第二步 将table添加到panel中(此时,table表示表格中内容)
3、表格的状态控制
            DefaultTableModel   model
            使用mode来创建一个表格
            JTable  table = new JTable(model);
            可以通过在创建model对象的时候,重写isCellEditable来返回fasle 是真个
            表格变为不可编辑状态

package org.lanqiao.table.demo;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;

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

public class TableDemo {
	public static void main(String[] args) {
		JFrame frame  = new JFrame();
		frame.setTitle("table demo");
		frame.setSize(new Dimension(500, 500));
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		Container  panel = frame.getContentPane();
		
		String[] columnNames = {"First Name",
                "Last Name",
                "Sport",
                "# of Years",
                "Vegetarian"};
		
		Object[][] data = {
			    {"Kathy打发打发打发大大撒法打高富帅的广泛但是", "Smith",
			     "Snowboarding", new Integer(5), new Boolean(false)},
			    {"John", "Doe",
			     "Rowing", new Integer(3), new Boolean(true)},
			    {"Sue", "Black",
			     "Knitting", new Integer(2), new Boolean(false)},
			    {"Jane", "White",
			     "Speed reading", new Integer(20), new Boolean(true)},
			    {"Joe", "Brown",
			     "Pool", new Integer(10), new Boolean(false)}
			};
		JTable table = new JTable(data,columnNames);
		
		
		//spanel.add(table);
		//panel.add(spanel);
		panel.setLayout(new BorderLayout());
		panel.add(table.getTableHeader(), BorderLayout.PAGE_START);
		panel.add(table, BorderLayout.CENTER);
		
		//DefaultTableModel  model = new DefaultTableModel(columnNames, 4);
	/*	DefaultTableModel model = new DefaultTableModel(data, columnNames) {
			public boolean isCellEditable(int row, int column) {
				
				return false;
			}

			
			
		};*/
		
		table.setFillsViewportHeight(true);
		TableColumn column = null;
		for (int i = 0; i < table.getColumnCount(); i++) {
		    column = table.getColumnModel().getColumn(i);
		    if (i == 2) {
		        column.setPreferredWidth(200); //third column is bigger
		    } else {
		        column.setPreferredWidth(50);
		    }
		}
		/*给表格添加新列
		 * TableColumn  newColumn = new TableColumn();
		newColumn.setHeaderValue("aaaa");
		table.addColumn(newColumn);*/
		System.out.println(table.getRowCount());
		table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
		//在使用时,最好将table添加到JScollPane
		JScrollPane spanel = new JScrollPane(table);
		panel.add(spanel);
		frame.setVisible(true);
		

		
		
	}
}

 

你可能感兴趣的:(GUI图形编程)