JTable的使用

  • 表格有两部分组成:行标题(Column Header)和行对象(Column Object),行标题是在此行的最上端,代表此数据的意义,行对象是在行标题下的内容。我们可以利用JTable所提供的getTableHeader()方法去的行标题
  • 把JTable放在JScollPane中,这种做法可以讲行标题和行对象完整的显示出来,因为JScollPane会自动取得行标题 如果不想用ScrollPane
  • 如果想设置列宽的值,用TableColumn类所提供的setPreferedWidth()方法来设置,并可利用JTable类所提供的setAutoResizeMode()方法来设置某个列宽时其他列宽的变化情况

  • 如果我们要显示的数据不固定或是数据类型不全以String类型显示,我们可以用Swing提供的各种Model设计所需要的表格(javax.swing.table)

TableModel

AbstractTableModel

DefaultTableModel

TableModel本身是一个Interface,在这个interface定义了若干方法,又因为TableModel本身是一个interface,所以之间实现建立表格不是很方便,所以Java提供了两个类分别实现这个界面,一个是AbstractTableModel抽象类,一个是DefaultTableModel实体类。

三者的关系如图所示:

implements                         extends

TableModel——>AbstractTableModel——>DefaultTableModel

1.AbstractTableModel

**继承这个类我们要自己实现getRowCount方法,getColumnCount方法,getValueAt方法

* 几个比较常用的方法:

*JTable的每一行,按照数据类型的不同可以有以下的排列显示方式:

1.Boolean:以Check Box表示

2.Number:以JTable表示,文字向右排列

3.ImageIcon:以图形JLable表示,图形置于JLable的中央

4.Object:以JLable显示对象的String内容,文字向左排列

2.  DefaultTableModel

3.  TableColumnModel

利用JTable的getColumnModel()方法取得TableColumnModel对象,再利用此对象进行设置

TableColumn类可针对表格中的每一行进行具体的设置。

?如何修改表格内容并能保存修改的值呢

复写AbstractTableModel的setValueAt和isCellEditor方法

SelectionModel

要想使用ListSelectionModel可利用JTable的getSelectionModel方法取得listselectionmode对象,再利用ListSelectionModel界面所定义的setSelectionmodel()来设置选择模式

        table.setCellSelectionEnabled(true);
        selectionmode=table.getSelectionModel();
selectionmode.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

JTable的事件处理(称为TableModelEvent事件)

处理TableModelEvent事件我们必须实现TableModelListener界面

      1.如何拦截事件信息?

在AbstractTableModel类中提供注册listener方法:addTableModelListener()

      2.在tableChanged方法中实现代码

时间: 2024-11-07 00:22:06

JTable的使用的相关文章

Swing中使用JTable动态获取数据库中的数据并显示

笔者注:本文供新手学习使用,若有一定基础,可以直接看3! 1.创建数据库: /* Navicat MySQL Data Transfer Source Server : aa Source Server Version : 50519 Source Host : localhost:3306 Source Database : test Target Server Type : MYSQL Target Server Version : 50519 File Encoding : 65001 D

JTable只要一双击就进入编辑状态,禁止的方法实现

我用JTable做了一个表格,表格内容只供查看和选择,可每次只要一双击,就进入编辑状态,可是现在我不需要当双击的时候修改表格的内容.这时候需要重载isCellEditable方法. 下面是我的实现的代码: DefaultTableModel model = new DefaultTableModel(date, columnNames) { public boolean isCellEditable(int row, int column) { return false; } }; 这样设置的话

JTable用法-实例

前几篇文章介绍了JTable的基本用法,本文实现一个简单的JTable,算是前文的一个总结,并造福供拷贝党们. Swing-JTable用法-入门 Swing-JTable的渲染器与编辑器使用demo Swing-JTable检测单元格数据变更事件 一.主要功能 1.数据的增删改: 2.渲染器:“Vegetarian”列存放布尔值,以checkBox形式显示:“Sport”列存放字符串,以comboBox形式显示: 3.编辑器:“Name”的编辑器实现一个按钮,按下时弹出对话框: 4.ToolT

Java 根据comboBox选择结果显示JTable

处理这样的问题的主要思路是:     对于JTable,JTree等Swing控件,都有一个对应的Model用来存储数据,JTable对应的有一个DefaultTableModel.     DefaultTableModel model = new DefaultTableModel(datas,columnNames);     JTable jTable = new JTable(model);        DefaultTableModel这个类支持使用数组Object[][]或者是V

JTable 和 AbstractTableModel 几个关键点

1    重写的方法 @Override public int getColumnCount() { // TODO Auto-generated method stub return this.columnNames.size(); } @Override public String getColumnName(int column) { // TODO Auto-generated method stub return (String) this.columnNames.get(column

【代码笔记】Java连连看项目的实现(2)——JTable 、TableModel的使用

博客有时间就写写,所以一篇可能会拆成很多篇,写完后计划再合在一起. 首先肯定是要实现连连看的界面. 先准备连连看要的图片.. “LianLianKan”就是项目名称. 当然,如果小白看我的博客想学到什么,我会说还是放弃,因为文字描述会忽视很多细节,而细节决定bug…… 所以,包括以前的和以后的,博文都会是给自己看看或者内行触类旁通的,也就是——笔记. 我也是今天才明白博文的真正意义吧,所以以后的博文风格会大改……尽量会用自己语言风格来描述以便自己能看懂. 废话少说,现在的第2步: 创建数组,一个

JavaSE GUI显示列表 JTable的刷新 重新加载新的数据

JTable在显示所有数据之后,假如需要搜索某个名字,则会获取新的列表数据. 假设datas是JTable的数据,定义为: private Vector<Vector> datas = new Vector<Vector>(); 当你刷新数据的时候,应该这样: if (datas != null) { datas.clear(); Vector<Vector> vectors = getDatasFromList(studentList); datas.addAll(v

JTable 单元格合并 【转】

单元格合并 一.单元格合并.(1)我们可以使用Jtable的三个方法:getCellRect(),columnAtPoint(),and rowAtPoint().第一个方法返回一个单元格的边界(Rectangle类),第二.三个方法分别返回屏幕指定位置的列和行.为了实现单元格合并,我们需要重载(overwrite)这三个方法. (2)另外我们需要找出渲染Jtable的ComponentUI对象,并且修改它以达到我们的目的. (3)创建新的类记录单元格合并情况的数据模型,它要包涵一个方法来取得单

【代码笔记】Java连连看项目的实现(1)——JTable 、TableModel的使用

javax.swing.table.TableModel和javax.swing.JTable JTable .TableModel是Java里面画表格的包. TableModel:为Table提供显示数据.表格维数.表格中显示数据类  型.列标题等Table需要显示的一些属性 JTable:提供表格本身的属性和操作,比如表格的样式.行高.背景.行选中属性等 JTable相当于网页,模特:TableModel相当于服务器,衣服. JTable .TableModel 两者是相互依赖的关系(等于B

Swing Jtable 网格线设置

Swing jtable不绘制网格线或只绘制一条垂直或水平线问题总结 1 不绘制网格线…但占屏幕空间…网格是透明的…. myJTable1.setShowHorizontalLines(false); 水平线不显示 myJTable1.setShowVerticalLines(false); 垂直线不显示 2 不绘制网格线…并且不占屏幕空间…网格是没有的…. setIntercellSpacing():修改单元格间隔,因此也将影响网格线的粗细. setRowMargin (0);设置相邻两行单元