`

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个月。

    java中JTable的应用】.pdf

    根据提供的文件内容和要求,我将详细阐述java中JTable的应用相关知识点。 ### JTable基本概念和用途 JTable是Java Swing库中用于显示和编辑二维表格数据的一个组件。它常用于数据库信息展示、用户界面设计、数据...

    java中JTable的简单应用

    在描述中提到的SQL2005和Eclipse6.0,它们与`JTable`的应用关系不大。SQL2005是指Microsoft SQL Server 2005,一个关系型数据库管理系统,而Eclipse6.0是一个集成开发环境(IDE),常用于Java开发。如果你需要从...

    swing中JTable的简单使用

    在"swing中JTable的简单使用"这个主题中,我们将深入探讨如何在Java Swing应用中有效地使用JTable。 首先,JTable是javax.swing.JTable类的实例,它是JFrame或JPanel等容器中的一个组件。JTable通常与TableModel...

    JTable实现行间拖拽的最简单方法

    在Java Swing应用中,`JTable`是一种常用的组件,用于展示和操作二维数据。它提供了丰富的功能,如排序、选择和编辑。然而,`JTable`默认并不支持行间的拖放(Drag and Drop, DnD)操作。本文将详细介绍如何通过一种...

    JTable的一些小应用

    ### JTable的一些小应用 #### 一、简介 在Java Swing框架中,`JTable` 类作为展示大量数据的一种常用组件而备受青睐。它不仅能够有效地呈现数据,还能支持数据编辑,并且允许开发者进行一定程度的定制化操作,以...

    mvc+Jquery-jTable

    - **简洁的API**:jTable 提供了一套简洁的API,使得与ASP.NET MVC的集成变得简单。 - **强大的功能**:jTable 功能强大,可以轻松实现数据表的各种操作,无需编写大量前端代码。 - **性能优化**:通过Ajax请求,...

    jtable详解

    在Java的图形用户界面(GUI)开发中,Swing库提供了丰富的组件以构建桌面应用程序,其中`JTable`是用于展示和编辑表格数据的关键组件。以下是对`JTable`的深入解析,包括其构造、属性、事件处理以及如何在实际项目中...

    Swing之JTable的详细介绍

    在示例代码中,我们看到`SimpleTable`类通过`Object[][]`和`String[]`数组创建了一个简单的JTable,然后将其放入`JScrollPane`中。`JScrollPane`使得表格可以滚动,并自动包含表格的列头。如果直接将表格添加到容器...

    整合 freemarker +spring security + spring MVC + spring DATA jpa 前端jtable 简单的crud

    本项目结合了Freemarker、Spring Security、Spring MVC和Spring Data JPA,旨在实现前端JTable的简单CRUD(创建、读取、更新、删除)功能。以下是这些技术的详细介绍及其在项目中的应用。 **Freemarker** 是一个...

    JTable的初步编程

    创建一个简单的`JTable`,你需要遵循以下步骤: 1. **创建TableModel**:首先,你需要创建一个`DefaultTableModel`对象,指定列数和初始行数。例如: ```java DefaultTableModel model = new DefaultTableModel...

    JAVA JTREE JTABLE实例代码

    这些代码可能涵盖了更复杂的功能,比如自定义渲染器、拖放操作、数据绑定等,学习这些代码可以帮助开发者更好地理解和应用JTree和JTable在实际项目中的各种用法。 总之,JTree和JTable是Java GUI编程中不可或缺的...

    JTable的介绍.doc

    在给定的代码示例中,`SimpleTable`类创建了一个简单的`JTable`。首先,它定义了一个二维数组`playerInfo`,其中包含了姓名、语文、数学、总分和及格情况等信息。接着,定义了一个字符串数组`Names`作为列名。然后,...

    JTable示例

    在给定的"JTable"示例中,很可能是展示了如何创建一个简单的`JTable`,包括添加列、插入数据以及将其添加到`JFrame`中。初学者可以通过这个示例学习如何在实际项目中使用`JTable`展示数据,了解其基本操作和交互。 ...

    Jtable 中放入多个按钮

    通过以上步骤,你可以在`JTable`的单元格中放置并管理多个按钮,使得你的应用程序具有更丰富的交互性。记住,自定义组件和事件处理是Swing编程中常见且重要的技能,熟练掌握这些技巧可以帮助你构建更加灵活和用户...

    JTable (动态添加数据)

    `JTable`是Java Swing中的一个组件,它用于在窗口应用中展示表格数据。它可以自动处理用户交互,如排序、选择和编辑单元格。`JTable`的数据存储在`TableModel`对象中。 2. **JavaBean**: JavaBean是一种符合特定...

    jTable的使用

    以上代码创建了一个简单的jTable,包含了姓名和年龄两列,并设置了自动排序功能。将其添加到`JScrollPane`后,可以在Swing窗口中显示。 通过深入理解jTable的使用,开发者可以充分利用其强大功能,为Java桌面应用...

    Swing之JTable详解

    以下是一个简单的示例,演示了如何使用数组构造`JTable`。 ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class SimpleTable { public SimpleTable() ...

    复杂JTable(复杂表头、跨行列表体)

    下面是一段简单的代码示例,展示了如何创建一个具有复杂表头和跨行列表体的`JTable`: ```java import javax.swing.*; import javax.swing.table.*; public class ComplexJTableExample { public static void ...

    Swing中JTABLE中添加JBUTTON控件

    4. **拓展应用**:添加了`JButton`的`JTable`不仅可以用于简单的点击事件,还可以实现更复杂的逻辑。例如,你可以通过按钮触发不同操作,如打开新窗口、更新数据、删除记录等。此外,还可以根据业务需求,为不同行或...

Global site tag (gtag.js) - Google Analytics