浅谈Java利用表格模型创建表格 原创
用来创建表格的 JTable 类并不负责存储表格中的数据,而是由表格模型负责存储。当利用 JTable 类直接创建表格时,只是将数据封装到了默认的表格模型中。接下来,我们来学习表格模型的使用方法。
利用表格模型创建表格
接口 TableModel 定义了一个表格模型,抽象类 AbstractTableModel 实现了 TableModel 接口的大部分方法,只有一下三个抽象方法没有实现。
(1)public int getRowCount() (2)public int getColumnCount() (3)public Object getValueAt(int rowIndex , int columnIndex)
通过继承 AbstractTableModel 类实现上面三个抽象方法可以创建自己的表格模型类。DefaultTableModel 类便是由 Swing 提供的继承了 AbstractTableModel 类并实现了上面三个抽象方法的表格模型类。
表格模型创建完成后,通过 JTable 类的构造方法 JTable(TableModel dm)创建表格,就实现了利用表格模型创建表格。
从JDK 1.6 开始,提供了对表格进行排序的功能。通过 JTable 类的 setRowSoreter(RowSorter<?extends TableModel>sorter)方法可以为表格设置排序器。TableRowSorter 类是由Swing 提供的排序器类。为表格设置排序器的典型代码如下:
DefaultTableModel tableModel = new DefaultTableModel(); //创建表格模型 JTable table = new JTable(tableModel); //创建表格 table.setRowSorter(new TableRowSorter(tableModel)); //设置排序器
如果为表格设置了排序器,当单机表格的某一列头时,在该列名称的后面将出现▲标记,说明按该列升序排列表格中的所有行;当再次单机该列头时,标记将变成▼,说明按该列降序排列表格中的所有行。
注意:
在使用表格排序器时,通常要为其设置表格模型。一种方法是通过构造方法 TableRowSorter(TableModel model)创建排序器;另一种方法是通过 setModel(TableModel model)方法为排序器设置表格模型。
以上就是本文的所有内容,谢谢大家对本站的支持,后面更加精彩!
相关推荐
-
Java 23种设计模型详解
设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每
-
Java3D实例之创建空间几何模型的实现方法
Java3D,算是比较古老的技术,Java8中Oracle对JavaFX支持了Java3D. 相关资料参照Oracle官网 <JDK8目前还没有正式发布 Early Access版本下载地址 http://jdk8.java.net>环境搭建Java3D开发环境,JDK下载见Oracle官网.安装后在安装目录下的lib文件中找到Java3D驱动包,添加的自己的项目中Java3D实现简单几何空间图形说明: 实例应用:创建3D直线 复制代码 代码如下: package com.java3d.den
-
浅析Java内存模型与垃圾回收
1.Java内存模型 Java虚拟机在执行程序时把它管理的内存分为若干数据区域,这些数据区域分布情况如下图所示: 程序计数器:一块较小内存区域,指向当前所执行的字节码.如果线程正在执行一个Java方法,这个计数器记录正在执行的虚拟机字节码指令的地址,如果执行的是Native方法,这个计算器值为空. Java虚拟机栈:线程私有的,其生命周期和线程一致,每个方法执行时都会创建一个栈帧用于存储局部变量表.操作数栈.动态链接.方法出口等信息. 本地方法栈:与虚拟机栈功能类似,只不过虚拟机栈为虚拟机执行J
-
Java 高并发三:Java内存模型和线程安全详解
网上很多资料在描述Java内存模型的时候,都会介绍有一个主存,然后每个工作线程有自己的工作内存.数据在主存中会有一份,在工作内存中也有一份.工作内存和主存之间会有各种原子操作去进行同步. 下图来源于这篇Blog 但是由于Java版本的不断演变,内存模型也进行了改变.本文只讲述Java内存模型的一些特性,无论是新的内存模型还是旧的内存模型,在明白了这些特性以后,看起来也会更加清晰. 1. 原子性 原子性是指一个操作是不可中断的.即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其它线程干扰
-
Java并发编程中的生产者与消费者模型简述
概述 对于多线程程序来说,生产者和消费者模型是非常经典的模型.更加准确的说,应该叫"生产者-消费者-仓库模型".离开了仓库,生产者.消费者就缺少了共用的存储空间,也就不存在并非协作的问题了. 示例 定义一个场景.一个仓库只允许存放10件商品,生产者每次可以向其中放入一个商品,消费者可以每次从其中取出一个商品.同时,需要注意以下4点: 1. 同一时间内只能有一个生产者生产,生产方法需要加锁synchronized. 2. 同一时间内只能有一个消费者消费,消费方法需要加锁synchro
-
Java 高并发七:并发设计模型详解
1. 什么是设计模式 在软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题 ,所提出的解决方案.这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领 域引入到计算机科学的. 著名的4人帮: Erich Gamma,Richard Helm, Ralph Johnson ,John Vlissides (Gof) <设计模式:可复用面向对象软件的基础>收录23种模式 2. 单例模式 单例对象的类必须保证只有一个实例存在.许
-
java自定义线程模型处理方法分享
看过我之前文章的园友可能知道我是做游戏开发,我的很多思路和出发点是按照游戏思路来处理的,所以和web的话可能会有冲突,不相符合. 来说说为啥我要自定义线程模型呢? 按照我做的mmorpg或者mmoarpg游戏划分,线程被划分为,主线程,全局同步线程,聊天线程,组队线程,地图线程,以及地图消息分发派送线程等: 一些列,都需要根据我的划分,以及数据流向做控制. 游戏服务器,主要要做的事情,肯定是接受玩家的 命令请求 -> 相应的操作 -> 返回结果: 在服务器端所有的消息都会注册到消息管理器里,然
-
浅谈Java利用表格模型创建表格 原创
用来创建表格的 JTable 类并不负责存储表格中的数据,而是由表格模型负责存储.当利用 JTable 类直接创建表格时,只是将数据封装到了默认的表格模型中.接下来,我们来学习表格模型的使用方法. 利用表格模型创建表格 接口 TableModel 定义了一个表格模型,抽象类 AbstractTableModel 实现了 TableModel 接口的大部分方法,只有一下三个抽象方法没有实现. (1)public int getRowCount() (2)public int getColumnCo
-
浅谈java继承中是否创建父类对象
1. 调用父类构造方法是真的,但是根本没有创建父类对象,只不过是调用父类构造方法来初始化属性. 如果说调用父类构造方法就等于创建父类对象,那就真的无稽之谈. new指令开辟空间,用于存放对象的各个属/性引用等,反编译字节码你会发现只有一个new指令,所以开辟的是一块空间,一块空间就放一个对象. 然后,子类调用父类的属性,方法啥的,那并不是一个实例化的对象. 在字节码中子类会有个u2类型的父类索引,属于CONSTANT_Class_info类型,通过CONSTANT_Class_info的描述可以
-
浅谈Java变量赋值运算符及相关实例 原创
Java程序中,需要进行大量的计算,所以要使用到运算符号,下面来给大家说明Java赋值运算符如何运用. 赋值运算符以符号"="表示,它是一个二元运算符(对两个操作数作处理),其功能是将右方操作数所含的值赋给左方操作数.例如: int a = 100; 该表达式是将100赋值给变量 a .左方的操作数必须是一个变量 ,而右边的才做书则可以是任何表达式,包括变量(如 a .number).常量(123.'book').有效表达式(如55*66). 1:使用赋值运算符为变量赋
-
浅谈Java内存区域与对象创建过程
一.java内存区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的区域则依赖用户线程的启动和结束而建立和销毁.根据<Java虚拟机规范(JavaSE7版)>的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域. 1.程序计数器(线程私有) 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码
-
浅谈JAVA Actor模型的一致性与隔离性
一.Actor模型介绍 在单核 CPU 发展已经达到一个瓶颈的今天,要增加硬件的速度更多的是增加 CPU 核的数目.而针对这种情况,要使我们的程序运行效率提高,那么也应该从并发方面入手.传统的多线程方法又极其容易出现 Bug 而难以维护,不过别担心,今天将要介绍另一种并发的模式能一定程度解决这些问题,那就是 Actor 模型. Actor 模型其实就是定义一组规则,这些规则规定了一组系统中各个模块如何交互及回应.在一个 Actor 系统中,Actor 是最小的单元模块,系统由多个 Actor 组
-
浅谈Java安全之C3P0链利用与分析
目录 0x00 前言 0x01 利用方式 利用方式 http base使用 0x02 C3P0分析 构造分析 利用分析 HEX序列化字节加载器 JNDI利用 0x03 结尾 0x00 前言 在一些比较极端情况下,C3P0链的使用还是挺频繁的. 0x01 利用方式 利用方式 在C3P0中有三种利用方式 http base JNDI HEX序列化字节加载器 在原生的反序列化中如果找不到其他链,则可尝试C3P0去加载远程的类进行命令执行.JNDI则适用于Jackson等利用.而HEX序列化字节加载器的
-
浅谈Java中File文件的创建以及读写
1.创建一个文件 @Test public void test6() throws IOException { File file1 = new File("C:\\IDEA\\h1.txt"); if(!file1.exists()){//文件不存在 file1.createNewFile(); System.out.println("创建成功"); }else{//文件存在 file1.delete(); System.out.println("删除成
-
Java利用Easyexcel导出excel表格的示例代码
目录 1.导入 EasyExcel Maven包 2.配置 3.输出Excel到前端 1.导入 EasyExcel Maven包 <!--easyexcel 导出excel依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.7</version> </depend
-
浅谈Java中Unicode的编码和实现
Unicode的编码和实现 大概来说,Unicode编码系统可分为编码方式和实现方式两个层次. 编码方式 字符是抽象的最小文本单位.它没有固定的形状(可能是一个字形),而且没有值."A"是一个字符,"€"也是一个字符.字符集是字符的集合.编码字符集是一个字符集,它为每一个字符分配一个唯一数字. Unicode 最初设计是作为一种固定宽度的 16 位字符编码.也就是每个字符占用2个字节.这样理论上一共最多可以表示216(即65536)个字符.上述16位统一码字符构成基
-
浅谈java常用的几种线程池比较
1. 为什么使用线程池 诸如 Web 服务器.数据库服务器.文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务.请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP.FTP 或 POP).通过 JMS 队列或者可能通过轮询数据库.不管请求如何到达,服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的. 构建服务器应用程序的一个简单模型是:每当一个请求到达就创建一个新线程,然后在新线程中为请求服务.实际上对于原型开发这
随机推荐
- Java实现的图片上传工具类完整实例
- 在Vista中隐藏不适合公开的内容的方法
- ASP.NET 性能优化之反向代理缓存使用介绍
- ThinkPHP连接数据库的方式汇总
- Smarty模板简单配置与使用方法示例
- 深入解析Python中的descriptor描述器的作用及用法
- python获取文件后缀名及批量更新目录下文件后缀名的方法
- 多域名一网站时如果返回最原来的域名
- 大幅优化MySQL查询性能的奇技淫巧
- php 中文和编码判断代码
- jquery获取html元素的绝对位置和相对位置的方法
- sqlserver数据库移动数据库路径的脚本示例
- JS实现响应鼠标点击动画渐变弹出层效果代码
- android横竖屏切换不重启activity解决方案
- 深入解析int(*p)[]和int(**p)[]
- 深入解析Android中的事件传递
- C#基础:基于const与readonly的深入研究
- 使用array_map简单搞定PHP删除文件、删除目录
- libevent库的使用方法实例
- redis 用scan指令 代替keys指令(详解)