展开全部

DefaultTableModel是常用的java表格模型。

参考代码:

package com.dusd;

import java.awt.BorderLayout;

import java.awt.Container;

import java.awt.Point;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.InputEvent;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.util.Arrays;

import java.util.Vector;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.ListSelectionModel;

import javax.swing.event.TableModelEvent;

import javax.swing.event.TableModelListener;

import javax.swing.table.DefaultTableModel;

import javax.swing.table.JTableHeader;

import javax.swing.table.TableColumnModel;

/**

* 表格模型事件示例

*

*

A component generally gains the focus when the user clicks it,

* or when the user tabs between components, or otherwise interacts

* with a component. A component can also be given the focus programmatically,

* such as when its containing frame or dialog-box is made visible.

* The snippet of the codes below shows how to give a particular component

* the focus every time the window gains the focus.

*

* @author HAN

*

*/

public class TableModel extends JFrame {

/**

*

*/

private static final long serialVersionUID = -8581492063632813033L;

public TableModel() {

62616964757a686964616fe58685e5aeb931333337396238// TODO Auto-generated constructor stub

final Container container = getContentPane();

Vector tableColumnNames = new Vector();

tableColumnNames.add("A");

tableColumnNames.add("B");

Vector> tableValues = new Vector>();

for (int i = 1; i

Vector vector = new Vector();

vector.add("A" + i);

vector.add("B" + i);

tableValues.add(vector);

}

final DefaultTableModel defaultTableModel = new DefaultTableModel(

tableValues, tableColumnNames);

final JTable table = new JTable(defaultTableModel);

JScrollPane scrollPane = new JScrollPane();

scrollPane.setViewportView(table);

container.add(scrollPane, BorderLayout.CENTER);

JPanel panel = new JPanel();

container.add(panel, BorderLayout.SOUTH);

JLabel labelA = new JLabel("A: ");

final JTextField textFieldA = new JTextField(15);

JLabel labelB = new JLabel("B: ");

final JTextField textFieldB = new JTextField(15);

JButton buttonAdd = new JButton("添加");

JButton buttonDel = new JButton("删除");

JButton buttonDeselected = new JButton("取消选择");

panel.add(labelA);

panel.add(textFieldA);

panel.add(labelB);

panel.add(textFieldB);

panel.add(buttonAdd);

panel.add(buttonDel);

panel.add(buttonDeselected);

buttonAdd.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

int[] selectedRows = table.getSelectedRows(); // table

// 默认情况容许多行选择

Vector rowData = new Vector();

rowData.add(textFieldA.getText());

rowData.add(textFieldB.getText());

if (selectedRows.length == 0) {

defaultTableModel.addRow(rowData);

textFieldA.setText(null);

textFieldB.setText(null);

} else if (selectedRows.length == 1) {

//System.out.println(selectedRows[0]);

defaultTableModel.insertRow(selectedRows[0] + 1, rowData);

textFieldA.setText(null);

textFieldB.setText(null);

} else {

JOptionPane.showMessageDialog(container,

"Your operation is forbidden", "Warning",

JOptionPane.WARNING_MESSAGE);

}

}

});

buttonDel.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

int[] selectedRows = table.getSelectedRows(); // table

// 默认情况容许多行选择

for (int i = 0; i

//System.out.println(selectedRows[i]);

defaultTableModel.removeRow(selectedRows[i] - i);

}

}

});

buttonDeselected.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

table.clearSelection();

}

});

scrollPane.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e) {

// System.out.println("here");

if (e.getClickCount() == 1

&& e.getButton() == MouseEvent.BUTTON1) {

table.clearSelection();

}

}

});

// make the text field focused every time the window is activated

addWindowFocusListener(new WindowAdapter() {

@Override

public void windowGainedFocus(WindowEvent e) {

// TODO Auto-generated method stub

textFieldA.requestFocus();

}

});

// **************************************************************

// This is a standard snippet to realize the desired column selection as in

// Excel

// **************************************************************

// row selection mode

table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

// column selection mode

TableColumnModel tableColumnModel = table.getColumnModel();

tableColumnModel.getSelectionModel().setSelectionMode(

ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

// allow the column selection (the row selection is allowed by default)

table.setColumnSelectionAllowed(true);

final JTableHeader tableHeader = table.getTableHeader();

tableHeader.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e) {

// TODO Auto-generated method stub

// Extended modifiers represent the state of all modal keys,

// such as ALT, CTRL, META.

if (e.getClickCount() == 1

&& e.getButton() == MouseEvent.BUTTON1) {

// Point point = new Point(e.getX(), e.getY());

Point point = new Point(e.getPoint());

int columnNum = tableHeader.columnAtPoint(point);

// System.out.println(columnNum);

int[] selectedColumns = table.getSelectedColumns();

if (selectedColumns.length != 0) {

// System.out.println("here1");

// System.out.println(InputEvent.getModifiersExText(e.getModifiersEx()));

if (e.getModifiersEx() == (InputEvent.CTRL_DOWN_MASK)) {

//System.out.println("ctrl");

if (Arrays.binarySearch(selectedColumns, columnNum) >= 0) {

table.removeColumnSelectionInterval(columnNum,

columnNum);

} else {

table.addColumnSelectionInterval(columnNum,

columnNum);

}

} else if (e.getModifiersEx() == (InputEvent.SHIFT_DOWN_MASK)) {

// System.out.println("shift");

table.setColumnSelectionInterval(

selectedColumns[0], columnNum);

} else {

table.setColumnSelectionInterval(columnNum,

columnNum);

}

} else {

// System.out.println("here2");

table.setColumnSelectionInterval(columnNum, columnNum);

}

table.setRowSelectionInterval(0, table.getRowCount() - 1);

}

}

});

defaultTableModel.addTableModelListener(new TableModelListener() {

public void tableChanged(TableModelEvent e) {

// TODO Auto-generated method stub

int type = e.getType();

int firstRow = e.getFirstRow();

//int lastRow = e.getLastRow(); // the last row seems to be always equal to the first row

int column = e.getColumn();

switch (type) {

case TableModelEvent.DELETE:

System.out.print("此次事件由 删除 行触发:");

System.out.println("此次删除的是第 " + firstRow + " 行");

break;

case TableModelEvent.INSERT:

System.out.print("此次事件由 插入 行触发:");

System.out.println("此次插入的是第 " + firstRow + " 行");

break;

case TableModelEvent.UPDATE:

System.out.print("此次事件由 更新 行触发:");

System.out.println("此次更新的是第 " + firstRow + " 行第 " + column + " 列");

break;

default:

System.out.println("此次事件由 其他原因 触发");

}

}

});

}

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

TableModel frame = new TableModel();

frame.setTitle("表格模型事件示例");

frame.pack(); //Realize the components.

//frame.setBounds(100, 100, 600, 300);

//textFieldA.requestFocus();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true); //Display the window.

}

}

java表格模型_java 的表格模型是什么?相关推荐

  1. java委托事件模型_JAVA授权事件模型讲解(原创)

    JAVA的授权事件模型包含三个概念:事件源,事件,事件监听器. 一,事件源:一个产生事件的对象.当这个对象的内部状态改变时,事件就会产生.一个事件源必须注册一个事件监听器已使监听器能够可以接受一个特定 ...

  2. java中reactor模型_Java——Netty Reactor模型(转)

    1. Reactor三种线程模型 1.1. 单线程模型 Reactor单线程模型,指的是所有的IO操作都在同一个NIO线程上面完成,NIO线程的职责如下: 1)作为NIO服务端,接收客户端的TCP连接 ...

  3. java线程的内存模型_java多线程内存模型

    java多线程内存模型: 可见性 要实现共享变量的可见性,必须保证两点: 1.线程修改后的共享变量能够及时从工作内存刷新到主内存中: 2.其他线程能够及时把共享变量的最新值从主内存更新到自己的工作内存 ...

  4. java多线程内存模型_Java多线程内存模型

    Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果.在此之前 ...

  5. java底层模型_Java I/O模型及其底层原理,夯实你的开发基础

    前言 Java I/O是Java基础之一,在面试中也比较常见,在这里我们尝试通过这篇文章阐述Java I/O的基础概念,帮助大家更好的理解Java I/O. 在刚开始学习Java I/O时,我很迷惑, ...

  6. java编写太阳_java绘图--太阳系模型

    java绘图在工作中使用的并不是很多,但是从这种小程序中用到很多基本知识和编程理念,最重要的是,可以很快的看到效果,体会到学习java的乐趣,不像C语言那样,学了很久却不知道学了有什么用,在枯燥的学习 ...

  7. java生成表_java生成表格图表

    项目有个需求是生成上图的表格图表,本来excel很容易生成上边的表格图,但是java poi不支持在服务器端把excel表格导出成图片,在没有找到合适的工具库下,用java 2d实现同样图表. 这个表 ...

  8. java 继承 模型_java – 画布形状模型的继承与组合?

    对于以下模型,您更喜欢继承还是组合: >我想在画布上绘制对象,每个对象代表一个数据对象 >将其视为状态机图:椭圆表示状态,线表示它们之间的连接/转换.对象表示本身永远不会改变,即状态将始终 ...

  9. java生成表格图片_java生成表格图片

    主要代码: /** * 生成图片 * @param cellsValue 以二维数组形式存放 表格里面的值 * @param path 文件保存路径 */ public void myGraphics ...

最新文章

  1. 如何创建启动界面Splash Screen
  2. Ubuntu 9.10 Server (Karmic) 迁移Bugzilla
  3. unity 常用函数
  4. 7-130 古风排版 (20 分)
  5. UE4为什么使用C++替代UnrealScript?
  6. Html IECheckBox双击问题
  7. distinct group by一起用_用ggplot2来画带有对角线的热图。
  8. docker 清理容器的一些命令,彻底或选择清理
  9. Car-like Robot运动参数分析
  10. 算法工程师常用Linux命令总结
  11. 淘宝又推新政策!所有商家视频流量免费,短视频红利来了
  12. c++ 银行管理系统
  13. rust服务器消失了_【Rust日报】 20190619:Facebook的数字货币项目Libra由Rust实现
  14. Xcode7 网络请求报错:The resource could not be loaded be
  15. Word‘由于宏安全设置 无法找到宏’问题解决
  16. java窗口如何定时关闭_[Java教程]【温故而知新】Javascript窗口效果 (全屏显示窗口、定时关闭窗口)_星空网...
  17. 一文通读SAP BRFPlus
  18. vue 水印插件 插件:directives.js
  19. “以简驭繁”打造卓越校园网 ——锐捷助力西安理工大学校园网建设
  20. 从零搭建深度学习工作站

热门文章

  1. 日历运用模式嵌套 布局 定位
  2. 快来直播带你走进视联网
  3. 蓝桥杯到底难不难?(内附第11届省赛+国赛真题解析)
  4. Android版本更新 ~ 版本号判断
  5. 【转】SPSS与EXCEL的比较
  6. 苹果电脑删除下载的更新文件_软件更新,无需手动下载更新文件。不再依赖QQ浏览器。...
  7. 外贸必备技能,如何正确使用国际短信及语音
  8. Vibosoft PDF Image Extractor v2.1.5中文版
  9. ChinaSkills-网络系统管理(2022年全国职业院校技能大赛-模块C-Window部署-02卷-评分标准 )
  10. JS进阶笔记(原型、继承、this指向、闭包、递归、正则表达式)