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;
}
分享到:
相关推荐
程序 收录了 当前Java所有简单到复杂的程序.从JTable是怎么来的,到AbstractTableModel的高级应用。都有程序来解释。希望喜欢开发GUI程序的程序员多看看。此程序够你学习一周。消化需要1个月。
根据提供的文件内容和要求,我将详细阐述java中JTable的应用相关知识点。 ### JTable基本概念和用途 JTable是Java Swing库中用于显示和编辑二维表格数据的一个组件。它常用于数据库信息展示、用户界面设计、数据...
在描述中提到的SQL2005和Eclipse6.0,它们与`JTable`的应用关系不大。SQL2005是指Microsoft SQL Server 2005,一个关系型数据库管理系统,而Eclipse6.0是一个集成开发环境(IDE),常用于Java开发。如果你需要从...
在"swing中JTable的简单使用"这个主题中,我们将深入探讨如何在Java Swing应用中有效地使用JTable。 首先,JTable是javax.swing.JTable类的实例,它是JFrame或JPanel等容器中的一个组件。JTable通常与TableModel...
在Java Swing应用中,`JTable`是一种常用的组件,用于展示和操作二维数据。它提供了丰富的功能,如排序、选择和编辑。然而,`JTable`默认并不支持行间的拖放(Drag and Drop, DnD)操作。本文将详细介绍如何通过一种...
### JTable的一些小应用 #### 一、简介 在Java Swing框架中,`JTable` 类作为展示大量数据的一种常用组件而备受青睐。它不仅能够有效地呈现数据,还能支持数据编辑,并且允许开发者进行一定程度的定制化操作,以...
- **简洁的API**:jTable 提供了一套简洁的API,使得与ASP.NET MVC的集成变得简单。 - **强大的功能**:jTable 功能强大,可以轻松实现数据表的各种操作,无需编写大量前端代码。 - **性能优化**:通过Ajax请求,...
在Java的图形用户界面(GUI)开发中,Swing库提供了丰富的组件以构建桌面应用程序,其中`JTable`是用于展示和编辑表格数据的关键组件。以下是对`JTable`的深入解析,包括其构造、属性、事件处理以及如何在实际项目中...
在示例代码中,我们看到`SimpleTable`类通过`Object[][]`和`String[]`数组创建了一个简单的JTable,然后将其放入`JScrollPane`中。`JScrollPane`使得表格可以滚动,并自动包含表格的列头。如果直接将表格添加到容器...
本项目结合了Freemarker、Spring Security、Spring MVC和Spring Data JPA,旨在实现前端JTable的简单CRUD(创建、读取、更新、删除)功能。以下是这些技术的详细介绍及其在项目中的应用。 **Freemarker** 是一个...
创建一个简单的`JTable`,你需要遵循以下步骤: 1. **创建TableModel**:首先,你需要创建一个`DefaultTableModel`对象,指定列数和初始行数。例如: ```java DefaultTableModel model = new DefaultTableModel...
这些代码可能涵盖了更复杂的功能,比如自定义渲染器、拖放操作、数据绑定等,学习这些代码可以帮助开发者更好地理解和应用JTree和JTable在实际项目中的各种用法。 总之,JTree和JTable是Java GUI编程中不可或缺的...
在给定的代码示例中,`SimpleTable`类创建了一个简单的`JTable`。首先,它定义了一个二维数组`playerInfo`,其中包含了姓名、语文、数学、总分和及格情况等信息。接着,定义了一个字符串数组`Names`作为列名。然后,...
在给定的"JTable"示例中,很可能是展示了如何创建一个简单的`JTable`,包括添加列、插入数据以及将其添加到`JFrame`中。初学者可以通过这个示例学习如何在实际项目中使用`JTable`展示数据,了解其基本操作和交互。 ...
通过以上步骤,你可以在`JTable`的单元格中放置并管理多个按钮,使得你的应用程序具有更丰富的交互性。记住,自定义组件和事件处理是Swing编程中常见且重要的技能,熟练掌握这些技巧可以帮助你构建更加灵活和用户...
`JTable`是Java Swing中的一个组件,它用于在窗口应用中展示表格数据。它可以自动处理用户交互,如排序、选择和编辑单元格。`JTable`的数据存储在`TableModel`对象中。 2. **JavaBean**: JavaBean是一种符合特定...
以上代码创建了一个简单的jTable,包含了姓名和年龄两列,并设置了自动排序功能。将其添加到`JScrollPane`后,可以在Swing窗口中显示。 通过深入理解jTable的使用,开发者可以充分利用其强大功能,为Java桌面应用...
以下是一个简单的示例,演示了如何使用数组构造`JTable`。 ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class SimpleTable { public SimpleTable() ...
下面是一段简单的代码示例,展示了如何创建一个具有复杂表头和跨行列表体的`JTable`: ```java import javax.swing.*; import javax.swing.table.*; public class ComplexJTableExample { public static void ...
4. **拓展应用**:添加了`JButton`的`JTable`不仅可以用于简单的点击事件,还可以实现更复杂的逻辑。例如,你可以通过按钮触发不同操作,如打开新窗口、更新数据、删除记录等。此外,还可以根据业务需求,为不同行或...