`

JTable 简单应用

 
阅读更多

package com.test.table.example1;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;

/**
 * 
 * @author LiuQing
 * @see 表格的操作
 * @version 1.0
 * @date 2010-8-11 下午2:54:52
 */
public class TableSelectionFrame extends JFrame {

	private static final long serialVersionUID = -3946729267999982017L;
	
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable(){

			@Override
			public void run() {
				try {
					UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
				} 
				catch (Exception e) {
					e.printStackTrace();
				}
				JFrame frame = new TableSelectionFrame();
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.setVisible(true);
			}
			
		});
	}
	
	public TableSelectionFrame() {
		setTitle("TableSelectionTest");
		this.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
		model = new DefaultTableModel(10,10);
		//初始化表格模块数据
		for (int i = 0; i < model.getRowCount(); i++) {
			for (int j = 0; j < model.getColumnCount(); j++) {
				model.setValueAt((i+ 1) * (j + 1), i, j);
			}
		}
		
		table = new JTable(model);
		add(new JScrollPane(table));
		//定义删除列模型数据
		this.removedColumns = new ArrayList<TableColumn>();
		
		//定义菜条
		JMenuBar menuBar = new JMenuBar();
		//添加到窗体中
		this.setJMenuBar(menuBar);
		JMenu selectionMenu = new JMenu("Selection");
		menuBar.add(selectionMenu);
		//定义复选菜单
		final JCheckBoxMenuItem rowsItem = new JCheckBoxMenuItem("Rows");
		final JCheckBoxMenuItem columnsItem = new JCheckBoxMenuItem("Columns");
		final JCheckBoxMenuItem cellsItem = new JCheckBoxMenuItem("Cells");
		//根据表格属性设置UI显示值
		rowsItem.setSelected(table.getRowSelectionAllowed());
		columnsItem.setSelected(table.getColumnSelectionAllowed());
		cellsItem.setSelected(table.getCellSelectionEnabled()); 
		
		//对行模型添加监听器
		rowsItem.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				table.clearSelection();
				table.setRowSelectionAllowed(rowsItem.isSelected());
				columnsItem.setSelected(table.getColumnSelectionAllowed());
				cellsItem.setSelected(table.getCellSelectionEnabled()); 
			}
			
		});
		selectionMenu.add(rowsItem);
		
		columnsItem.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				table.clearSelection();
				table.setColumnSelectionAllowed(columnsItem.isSelected());
				
				rowsItem.setSelected(table.getRowSelectionAllowed());
				columnsItem.setSelected(table.getColumnSelectionAllowed());
				cellsItem.setSelected(table.getCellSelectionEnabled()); 
			}
			
		});
		selectionMenu.add(columnsItem);
		
		cellsItem.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				table.clearSelection();
				table.setCellSelectionEnabled(cellsItem.isSelected());
				
				rowsItem.setSelected(table.getRowSelectionAllowed());
				columnsItem.setSelected(table.getColumnSelectionAllowed());
				cellsItem.setSelected(table.getCellSelectionEnabled()); 
			}
			
		});
		selectionMenu.add(cellsItem);
		
		JMenu tableMenu = new JMenu("Edit");
		menuBar.add(tableMenu);
		
		JMenuItem hideColumnsItem = new JMenuItem("Hide Column");
		//添加隐藏操作
		hideColumnsItem.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				//通过表格获得先择的列
				int []selected = table.getSelectedColumns();
				//获得列模型
				TableColumnModel columnModel = table.getColumnModel();
				for (int i = selected.length - 1; i >= 0; i--) {
					//获得对应的列信息
					TableColumn column = columnModel.getColumn(selected[i]);
					table.removeColumn(column);
					removedColumns.add(column);
				}
			}
		});
		tableMenu.add(hideColumnsItem);
		
		JMenuItem showColumnsItem = new JMenuItem("Show Column");
		showColumnsItem.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				//显示被删除的列,从cache 中获得删除Column对象
				for (TableColumn tc:removedColumns) {
					table.addColumn(tc);
				}
				removedColumns.clear();
			}
		});
		tableMenu.add(showColumnsItem);
		
		JMenuItem addRowItem = new JMenuItem("Add Row");
		addRowItem.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				//新增行数据
				Integer newCells[] = new Integer[model.getColumnCount()];
				for (int i = 0; i < newCells.length; i++) {
					newCells[i] = (i + 1) * model.getRowCount() + 1;
				}
				model.addRow(newCells);
				
			}
			
		});
		tableMenu.add(addRowItem);
		
		JMenuItem removeRowsItem = new JMenuItem("Remove Row");
		removeRowsItem.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				//删除行数据
				int selected[] = table.getSelectedRows();
				for (int i = selected.length - 1; i >= 0; i--) {
					model.removeRow(selected[i]);
				}
			}
			
		});
		tableMenu.add(removeRowsItem);
		
		//清空数据
		JMenuItem clearCellsItem = new JMenuItem("Clear Cell");
		clearCellsItem.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				for (int i = 0; i < table.getRowCount(); i++) {
					for (int j = 0; j < table.getColumnCount(); j++) {
						if (table.isCellEditable(i, j)) {
							table.setValueAt(0, i,j);
						}
					}
				}
			}
			
		});
		tableMenu.add(clearCellsItem);
		
	}
	
	//定义表格模型
	private DefaultTableModel model;
	//表格
	private JTable table;
	//列模型
	private ArrayList<TableColumn> removedColumns;
	
	private static final int DEFAULT_WIDTH = 400;
	
	private static final int DEFAULT_HEIGHT = 300;

}
 
分享到:
评论

相关推荐

    JTable的高级应用

    程序 收录了 当前Java所有简单到复杂的程序.从JTable是怎么来的,到AbstractTableModel的高级应用。都有程序来解释。希望喜欢开发GUI程序的程序员多看看。此程序够你学习一周。消化需要1个月。

    JTable的一些小应用

    JTable的一些应用 Swing颇受欢迎的JTable类为显示大块数据提供了一种简单的机制。JTable有很多东西是用于数据的生成和编辑,其中的很多东西还可以自定义,从而更进一步增强其功能。本文会引导你一步步地进入JTable的...

    java中JTable的简单应用

    本人最新的作业,可能还有点儿不完善,仅供刚刚接触java的初学者参考! sql2005 eclipse6.0

    JTable应用实例

    简单易懂的JTable应用实例,import javax.swing.table.DefaultTableModel;

    JTable数据模型设置与数据库综合

    JTable数据模型设置与数据库综合应用,该文档使用的是sql server 2000 作为数据库服务器来实现的,简单说明了Jtable 数据模型的使用方法,以及数据库操作的基本写法。

    JTable_JTree.rar_JTable Java_JTree JTable_jtree

    JAVA中的SWING应用实现简单的JTable和JTree

    《JTable编写GUI学生对象管理系统》源码

    该资源适用于希望学习如何使用JTable组件来创建GUI应用程序的人群。您可以通过该示例了解如何创建一个简单的学生对象管理系统,包括添加、删除、编辑和展示学生信息等功能。通过实践,您可以加深对JTable的理解,并...

    jTable:简单的jQuery SPA

    表格jQuery简单表大家好 :) 这个带有节点js&jquery的应用程序显示带有服务器响应数据的... -克隆项目在终端中点击命令:cd &lt;PROJECT&gt; cd jTable npm install节点应用在浏览器中打开“ localhost:4004 / data”。

    Movies:简单的电影数据库应用程序。 使用 JTable GUI 组件显示来自 Derby 数据库的数据

    电影简单的电影数据库应用程序。 使用 JTable GUI 组件显示来自 Derby 数据库的数据 Custom TableModel 处理在 GUI 中显示来自表的数据。

    h_JAVA 2应用编程150例.rar

    实例46 UDP与TCP/IP的简单应用 129 实例47 聊天室 131 实例48 浏览FTP 136 实例49 局域网广播 147 实例50 建立HTTP连接 151 实例51 迷你浏览器 152 实例52 扫描应用端口 154 实例53 监控HTTP 155 实例54 收发电子...

    Java经典编程源码基础例程300.zip

    实例067 局部内部类的简单应用 103 实例068 匿名内部类的简单应用 104 实例069 静态内部类的简单应用 105 实例070 实例化Class类的几种方式 107 实例071 查看类的声明 108 实例072 查看类的成员 110 实例073 查看...

    java应用软件程序设计

    125 实例45 选择字体 126 实例46 UDP与TCP/IP的简单应用 129 实例47 聊天室 131 实例48 浏览FTP 136 实例49 局域网广播 147 实例50 建立HTTP连接 151 实例51 迷你浏览器 152 实例52 扫描...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例120 局部内部类的简单应用 152 实例121 匿名内部类的简单应用 153 实例122 静态内部类的简单应用 154 第2篇 Java高级应用 第6章 多线程技术 158 6.1 线程的基础 159 实例123 新建无返回值的线程 159 实例124 ...

    Java数据库查询结果的输出

     利用Java开发数据库应用时,经常需要在用户界面上显示查询结果。我们可以利用Vector、JTable、AbstractTableModel等三个类较好地解决这一问题。 类Vector:  定义如下: public class Vector extends ...

Global site tag (gtag.js) - Google Analytics