|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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打包应用程序是一样的。按照你的想法,你是不是也希望服务器都整合由一家公司提供呢? |
|