仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 884|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA教程之用Swing的Jtable类让数据看起来更洁净

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:50:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
前些天,在CSDN上看到了一个消息,说是ASP.NETAJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。数据
Swing颇受接待的JTable类为显现年夜块数据供应了一种复杂的机制。JTable有良多工具是用于数据的天生和编纂,个中的良多工具还能够自界说,从而更进一步加强其功效。本文会引诱你一步步地进进JTable的天下。

ListingA包括了一个复杂示例的代码,这个示例会申明经常使用JTable的举动。用户可以变动JTable的结构、拖放它的栏,大概经由过程拖动题目的分开线来改动其巨细。

这些列被保留在一个String数组里:String[]columnNames={"Product","NumberofBoxes","Price"};数据被初始化并保留在一个二维的对象数组里:Object[][]data={{"Apples",newInteger(5),"5.00"},{"Oranges",newInteger(3),"6.00"},{"Pears",newInteger(2),"4.00"},{"Grapes",newInteger(3),"2.00"},};JTable是利用data和columnNames组成的:JTabletable=newJTable(data,columnNames);
检察JTable
JTable的高度和宽度依照上面的办法来设定:table.setPreferredScrollableViewportSize(newDimension(300,80));假如JTable的一个列大概JTable窗口本身的巨细被从头断定,那末其他列会被响应的减少大概缩小,以顺应新的窗口。利用setAutoResizeMode()办法就可以够把持这类举动:table.setAutoResizeMode(intmode);mode整数字段大概的值有:AUTO_RESIZE_OFFAUTO_RESIZE_NEXT_COLUMNAUTO_RESIZE_SUBSEQUENT_COLUMNSAUTO_RESIZE_LAST_COLUMNAUTO_RESIZE_ALL_COLUMNS

表格的缺省值

单位格内方格坐标线的缺省色彩是Color.gray。要变动这些方格坐标线的色彩,就要用到:table.setGridColor(Color.black);你能够用上面的办法来改动行的高度:table.setRowHeight(intpixelHeight);各个单位格的高度将即是行的高度减往行间的间隔。在缺省情形下,内容的远景色彩和背景色彩的选择都是由Swing的所见即所得的完成来断定的。你可使用上面的办法来变动选择的色彩:table.setSelectionBackground(Color.black);table.setSelectionForeground(Color.white);你也能够埋没单位格的方格坐标线,就像上面如许:table.setShowHorizontalLines(false);table.setShowVerticalLines(false);图A显现了一个埋没了其程度坐标线的JTable。

图A


列的宽度
JTable组件有几个把持表格特征的类和接口。TableColumn会不休追踪列的宽度,并卖力列巨细的调剂,包含最年夜和最小宽度。TableColumnModel办理着TableColumns的汇合和列的选择。要设置某个列的宽度,就要为表格列的模子设置一个参照。然后,获得想要的TableColumn并挪用其setPreferredWidth()办法:TableColumncolumn=table.getColumnModel().getColumn(0);column.setPreferredWidth(100);当用户拖放列的时分,列的索引其实不会产生改动。getColumn(0)办法会一向前往准确的列,不管它呈现在屏幕的哪一个中央。

题目

JtableHeader会处置JTable题目的显现。你能够细分JtableHeader以取得自界说的结构。比方,假如你的使用程序必要一个超过多个列的题目,那末只用复杂地细分JtableHeader并将它集成到你的JTable里就好了。你能够经由过程为以后JTable的JtableHeader设置一个参照大概挪用其setReorderingAllowed()办法,来指定题目的从头排序是不是被同意:table.getTableHeader().setReorderingAllowed(false);相似地,你能够确信列不会由于在列题目之间拖动而改动巨细。要到达这个目标,你就要利用setResizingAllowed()办法:table.getTableHeader().setResizingAllowed(false);
选择形式
在缺省情况下,当用户在JTable里选择一个单位格的时分,全部行都被选中了。有多种办法可以让用户自界说选择的体例。使用ListSelectionModel接口,你能够同意用户选择单个大概多个行:table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);ListSelectionModel有上面这些字段:
SINGLE_SELECTION同意一次选择一行。SINGLE_INTERVAL_SELECTION同意选择相邻的一系列行。MULTIPLE_INTERVAL_SELECTION也同意选择相邻的列,可是带有扩大功效。它同意用户利用[Ctrl]键举行多个互不相邻的选择(即选择不相邻的行)。
setCellSelectionEnabled()办法让用户可以同时选择单个单位格大概全部行:table.setCellSelectionEnabled(true);假如被设置为是,setCellSelectionEnabled()办法还会同意在选择行和单个单位格的同时选择列,假如图B所示。

图B



编纂单位格

我们这个复杂的表格同意用户编纂表格里的任何单位格。ListingB列出了一个表格,它同意由程序员来决意哪些单位格可以被编纂。第一步是创立一个自界说的TableModel:classSimpleTableModelextendsAbstractTableModel{}数据被封装在TableModel里,当JTable初始化的时分,自界说的TableModel就被作为一个参数传送给JTable的机关函数而不是谁人二维的对象数组:SimpleTableModelmyModel=newSimpleTableModel();JTabletable=newJTable(myModel);假如想让第二列和第三列也变得能够编纂,并把第一列酿成恒定的,那末你就要强迫替换TableModel的isCellEditable()办法:publicbooleanisCellEditable(introw,intcol){if(col==0){returnfalse;}else{returntrue;}}
复杂的表格考证
你必要确保用户只输出整数值,假设说,向第二列(“盒子的数目”这一列)输出值来强迫替换setValueAt()办法,并将考证逻辑包含进这个新办法里。起首,你要反省列是不是是整数,和这个列是不是只应当包括整数值:if(data[0][col]instanceofInteger&&!(valueinstanceofInteger)){…}else{data[row][col]=value;}然后,反省被拔出的值是不是是个整数。假如它不是的,那末这个字段就不该该被更新,并且应当要显现一条毛病信息:try{data[row][col]=newInteger(value.toString());}catch(NumberFormatExceptione){JOptionPane.showMessageDialog(SimpleTable.this,"Pleaseenteronlyintegervalues.");}

背景色彩

ListingC包括了用于ColorTable.java的代码,它申明了怎样向JTable到场色彩。你能够经由过程强迫替换其prepareRenderer()办法来向JTable到场背景色彩:JTabletable=newJTable(data,columnNames){publicComponentprepareRenderer(TableCellRendererr,introw,intcol){}};然后,拔出决意哪些列应当有色彩和应当是甚么色彩的逻辑:if(col==2&&!isCellSelected(row,col)){Colorbg=newColor(200,100,30);c.setBackground(bg);c.setForeground(Color.white);}要注重,当你变动单位格背景色彩的时分,你还应当更该单位格里所显现的文本的色彩,让其变得加倍易读。图C显现了一个第一列和第二列加上了色彩的JTable。

图C


统统皆在把握中
我们的例子只是JTable其他部分的基本。经由过程利用这些工具,你可以疾速和容易地掌控对Java使用程序所天生的表格的格局化,如许就可以够让你的用户在举行一般利用的时分不碰着停滞。

用winrar打包j2ee的程序和用IDE打包应用程序是一样的。按照你的想法,你是不是也希望服务器都整合由一家公司提供呢?
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-21 16:17:24 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
活着的死人 该用户已被删除
板凳
发表于 2015-1-30 20:59:14 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
admin 该用户已被删除
地板
发表于 2015-2-5 05:41:00 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
小魔女 该用户已被删除
5#
发表于 2015-2-5 11:22:51 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
海妖 该用户已被删除
6#
发表于 2015-2-10 09:31:13 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
变相怪杰 该用户已被删除
7#
发表于 2015-3-1 07:37:40 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
灵魂腐蚀 该用户已被删除
8#
 楼主| 发表于 2015-3-10 12:54:25 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
小妖女 该用户已被删除
9#
发表于 2015-3-11 11:18:38 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
只想知道 该用户已被删除
10#
发表于 2015-3-18 07:47:51 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
兰色精灵 该用户已被删除
11#
发表于 2015-3-25 13:17:03 | 只看该作者
是一种为 Internet发展的计算机语言
因胸联盟 该用户已被删除
12#
发表于 2015-3-31 14:41:39 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
乐观 该用户已被删除
13#
发表于 2015-4-6 06:45:11 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
柔情似水 该用户已被删除
14#
发表于 2015-4-10 08:10:02 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
若天明 该用户已被删除
15#
发表于 2015-4-16 03:55:24 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
山那边是海 该用户已被删除
16#
发表于 2015-4-19 08:17:25 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
蒙在股里 该用户已被删除
17#
发表于 2015-4-20 09:21:56 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
分手快乐 该用户已被删除
18#
发表于 2015-4-21 17:16:57 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
冷月葬花魂 该用户已被删除
19#
发表于 2015-4-28 21:43:31 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
莫相离 该用户已被删除
20#
发表于 2015-4-30 20:58:35 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-30 01:33

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表