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

Table 例子

2013年10月06日 ⁄ 综合 ⁄ 共 4361字 ⁄ 字号 评论关闭

例子一:

package tableDemo3;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;

/**
 * 创建人: case-case
 * 创建日期: 2013-6-3
 * DefaultTableModel比AbstractTableModel构建更加有意义
 * 
 * @version 1.0
 * @since NC5.7
 */
public class ChangeTable implements ActionListener {

	private JFrame frame = new JFrame("Hi ,Mr.li");
	private JTable table = null;
	private DefaultTableModel tableModel;
	private String[] titles = {
		"姓名",
		"年龄",
		"数学成绩",
		"英语成绩",
		"总分",
		"是否及格" };
	Object[][] userInfo = {
		{
			"啊啊",
			30,
			"男",
			89,
			97,
			186,
			true },
		{
			"哈哈",
			23,
			"女",
			90,
			93,
			183,
			false } };

	private JButton btnAddRow = new JButton("增加行");
	private JButton btnRemoveRow = new JButton("删除行");
	private JButton btnAddCol = new JButton("增加列");
	private JButton btnRemoveCol = new JButton("删除列");

	public ChangeTable() {
		this.tableModel = new DefaultTableModel(this.userInfo, this.titles);
		this.table = new JTable(this.tableModel);
		JScrollPane scr = new JScrollPane(this.table);
		JPanel toolBar = new JPanel();
		toolBar.add(this.btnAddRow);
		toolBar.add(this.btnAddCol);
		toolBar.add(this.btnRemoveCol);
		toolBar.add(this.btnRemoveRow);

		frame.add(toolBar, BorderLayout.NORTH);
		frame.add(scr, BorderLayout.CENTER);

		frame.setSize(370, 160);
		frame.setVisible(true);

		frame.addWindowFocusListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(1);
			}
		});

		this.btnAddCol.addActionListener(this);
		this.btnAddCol.addActionListener(this);
		this.btnRemoveCol.addActionListener(this);
		this.btnRemoveRow.addActionListener(this);

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == this.btnAddRow) {
			this.tableModel.addColumn("新增列");
		}
		if (e.getSource() == this.btnAddCol) {
			this.tableModel.addRow(new Object[] {});
		}

		if (e.getSource() == this.btnRemoveCol) {
			int colCount = this.tableModel.getColumnCount();// 列数
			if (colCount >= 0) {
				// 如果删除,必须找到TableColumnModel
				TableColumnModel columnModel = this.table.getColumnModel();
				TableColumn tableColumn = columnModel.getColumn(colCount);
				columnModel.removeColumn(tableColumn);
				this.tableModel.setColumnCount(colCount);
			}
		}
		if (e.getSource() == this.btnRemoveRow) {
			int rowCount = this.tableModel.getRowCount() - 1;
			if (rowCount >= 0) {
				// 判断是否可以删除
				this.tableModel.removeRow(rowCount);
				this.tableModel.setRowCount(rowCount);
			}
		}

	}

}

package tableDemo3;

/**
 * 
 * case-case
 * @version 1.0
 * @since NC5.7
 */
public class JTableDemo3 {
public static void main(String[] args) {
	new ChangeTable();
}
}

例子二:

package tableDemo2;

import javax.swing.table.AbstractTableModel;

/**
 * <p>
 * 创建人: case-case
 * <p>
 * 创建日期: 2013-6-3
 * <p>
 * 
 * @version 1.0
 * @since NC5.7
 */
public class DefaultTable extends AbstractTableModel {

	private String[] titles = {
		"姓名",
		"年龄",
		"数学成绩",
		"英语成绩",
		"总分",
		"是否及格" };
	Object[][] userInfo = {
		{
			"李林君",
			30,
			"男",
			89,
			97,
			186,
			true },
		{
			"哈哈",
			23,
			"女",
			90,
			93,
			183,
			false } };

	/**
	 * 返回行数
	 * 
	 * @return
	 * @see javax.swing.table.TableModel#getRowCount()
	 */
	@Override
	public int getRowCount() {
		return this.userInfo.length;
	}

	/**
	 * 返回列数
	 * 
	 * @return
	 * @see javax.swing.table.TableModel#getColumnCount()
	 */
	@Override
	public int getColumnCount() {
		return this.titles.length;
	}

	/**
	 * 返回指定位置的值
	 * 创建日期: 2013-6-3
	 * 
	 * @param rowIndex
	 * @param columnIndex
	 * @return
	 * @see javax.swing.table.TableModel#getValueAt(int, int)
	 */
	@Override
	public Object getValueAt(int rowIndex, int columnIndex) {
		return this.userInfo[rowIndex][columnIndex];
	}

	/**
	 * 返回列名
	 * 
	 * @param column
	 * @return
	 * @see javax.swing.table.AbstractTableModel#getColumnName(int)
	 */
	@Override
	public String getColumnName(int column) {
		return this.titles[column];
	}

	/**
	 * 得到指定列的类型
	 * 
	 * @param columnIndex
	 * @return
	 * @see javax.swing.table.AbstractTableModel#getColumnClass(int)
	 */
	public Class<?> getColumnClass(int columnIndex) {
		return this.getValueAt(0, columnIndex).getClass();
	}

	/**
	 * 所有的内容都可以编辑
	 * 
	 * @param rowIndex
	 * @param columnIndex
	 * @return
	 * @see javax.swing.table.AbstractTableModel#isCellEditable(int, int)
	 */
	public boolean isCellEditable(int rowIndex, int columnIndex) {
		return true;
	}

	/**
	 * 获得指定位置的值
	 * <p>
	 * 创建日期: 2013-6-3
	 * <p>
	 * 
	 * @param aValue
	 * @param rowIndex
	 * @param columnIndex
	 * @see javax.swing.table.AbstractTableModel#setValueAt(java.lang.Object, int, int)
	 */
	@Override
	public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
		this.userInfo[rowIndex][columnIndex] = aValue;
	}
}

package tableDemo2;

import test.TableColumnModelDemo;

/**
 * 创建人: case-case
 * <p>
 * 创建日期: 2013-6-3
 * @version 1.0
 * @since NC5.7
 */
public class JTbleDemo02 {

	public static void main(String[] args) {
		new TableColumnModelDemo();
	}
}

【上篇】
【下篇】

抱歉!评论已关闭.