【2017年整理】Java中JTable的用法

上传人:豆浆 文档编号:990298 上传时间:2017-05-24 格式:DOCX 页数:5 大小:21.34KB
返回 下载 相关 举报
【2017年整理】Java中JTable的用法_第1页
第1页 / 共5页
【2017年整理】Java中JTable的用法_第2页
第2页 / 共5页
【2017年整理】Java中JTable的用法_第3页
第3页 / 共5页
【2017年整理】Java中JTable的用法_第4页
第4页 / 共5页
【2017年整理】Java中JTable的用法_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《【2017年整理】Java中JTable的用法》由会员分享,可在线阅读,更多相关《【2017年整理】Java中JTable的用法(5页珍藏版)》请在金锄头文库上搜索。

1、Java 中 JTable 的用法Listing A 包含了一个简单示例的代码,这个示例会说明常用 JTable 的行为。用户能够更改 JTable 的布局、拖放它的栏,或者通过拖动标题的分隔线来改变其大小。这些列被保存在一个 String 数组里:String columnNames = Product,Number of Boxes,Price;数据被初始化并保存在一个二维的对象数组里:Object data =Apples, new Integer(5),5.00,Oranges, new Integer(3),6.00,Pears, new Integer(2),4.00,Grapes

2、, new Integer(3),2.00,;JTable 是使用 data 和 columnNames 构成的:JTable table = new JTable(data, columnNames);一、查看 JTableJTable 的高度和宽度按照下面的方法来设定:table.setPreferredScrollableViewportSize(new Dimension(300, 80);如果 JTable 的一个列或者 JTable 窗口自身的大小被重新确定,那么其他列会被相应的缩小或者放大,以适应新的窗口。使用 setAutoResizeMode()方法就能够控制这种行为:tab

3、le.setAutoResizeMode(int mode);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);各个

4、单元格的高度将等于行的高度减去行间的距离。在缺省情况下,内容的前景颜色和背景颜色的选择都是由 Swing 的所见即所得的实现来确定的。你可以使用下面的方法来更改选择的颜色:table.setSelectionBackground(Color.black); table.setSelectionForeground(Color.white);你也可以隐藏单元格的方格坐标线,就像下面这样:table.setShowHorizontalLines(false);table.setShowVerticalLines(false);三、列的宽度JTable 组件有几个控制表格特性的类和接口。TableC

5、olumn 会不断追踪列的宽度,并负责列大小的调整,包括最大和最小宽度。TableColumnModel 管理着 TableColumns 的集合以及列的选择。要设置某个列的宽度,就要为表格列的模型设置一个参照。然后,取得想要的 TableColumn 并调用其setPreferredWidth()方法:TableColumncolumn = table.getColumnModel().getColumn(0);column.setPreferredWidth(100);当用户拖放列的时候,列的索引并不会发生改变。getColumn(0)方法会一直返回正确的列,无论它出现在屏幕的哪个地方。四

6、、标题JtableHeader 会处理 JTable 标题的显示。你可以细分 JtableHeader 以获得自定义的布局。例如,如果你的应用程序需要一个跨越多个列的标题,那么只用简单地细分 JtableHeader并将它集成到你的 JTable 里就行了。你可以通过为当前 JTable 的 JtableHeader 设置一个参照或者调用其setReorderingAllowed()方法,来指定标题的重新排序是否被允许:table.getTableHeader().setReorderingAllowed(false);类似地,你可以确信列不会因为在列标题之间拖动而改变大小。要达到这个目的,你

7、就要使用 set ResizingAllowed()方法: table.getTableHeader().setResizingAllowed(false);五、选择模式在缺省状况下,当用户在 JTable 里选择一个单元格的时候,整个行都被选中了。有多种方法能够让用户自定义选择的方式。利用 ListSelectionModel 接口,你可以允许用户选择单个或者多个行:table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);ListSelectionModel 有下面这些字段:SINGLE_SELECTION 允许一次选择一行。S

8、INGLE_INTERVAL_SELECTION 允许选择相邻的一系列行。MULTIPLE_INTERVAL_SELECTION 也允许选择相邻的列,但是带有扩展功能。它允许用户使用Ctrl键进行多个互不相邻的选择(即选择不相邻的行) 。setCellSelectionEnabled()方法让用户能够同时选择单个单元格或者整个行:table.setCellSelectionEnabled(true);如果被设置为是,setCellSelectionEnab led()方法还会允许在选择行和单个单元格的同时选择列。六、编辑单元格我们这个简单的表格允许用户编辑表格里的任何单元格。Listing B

9、 列出了一个表格,它允许由程序员来决定哪些单元格能够被编辑。第一步是创建一个自定义的 TableModel:class SimpleTableModel extends AbstractTableModel 数据被封装在 TableModel 里,当 JTable 初始化的时候,自定义的 TableModel 就被作为一个参数传递给 JTable 的构造函数而不是那个二维的对象数组:SimpleTableModelmyModel = new SimpleTableModel();JTable table = new JTable(myModel);如果想让第二列和第三列也变得可以编辑,并把第一

10、列变成恒定的,那么你就要强制替代 TableModel 的 isCellEditable()方法:public booleanisCellEditable(int row, intcol)if (col = 0) return false;else return true; 七、简单的表格验证你需要确保用户只输入整数值,假如说,向第二列(“盒子的数量”这一列)输入值来强制替代 setValueAt()方法,并将验证逻辑包括进这个新方法里。首先,你要检查列是否是整数,以及这个列是否只应该包含整数值:if (data0col instanceof Integer & !(value instanc

11、eof Integer) else datarowcol = value;然后,检查被插入的值是否是个整数。如果它不是的,那么这个字段就不应该被更新,而且应该要显示一条错误信息:try datarowcol = new Integer(value.toString(); catch (NumberFormatException e) JOptionPane.showMessageDialog(SimpleTable.this,Please enter only integer values.);八、背景颜色Listing C 包含了用于 ColorTable.java 的代码,它说明了如何向

12、JTable 加入颜色。你可以通过强制替代其 prepareRenderer()方法来向 JTable 加入背景颜色:JTable table = new JTable(data, columnNames)public Component prepareRenderer(TableCellRenderer r, int row, intcol);然后,插入决定哪些列应该有颜色以及应该是什么颜色的逻辑:if (col = 2 & !isCellSelected(row, col)Color bg = new Color(200, 100, 30);c.setBackground(bg);c.se

13、tForeground(Color.white);要注意,当你更改单元格背景颜色的时候,你还应该更该单元格里所显示的文本的颜色,让其变得更加易读。图 C 显示了一个第一列和第二列加上了颜色的 JTable。九、一切皆在掌握中我们的例子只是 JTable 其他部分的基础。通过使用这些工具,你能够快速和轻易地掌控对 Java 应用程序所生成的表格的格式化,这样就能够让你的用户在进行正常使用的时候不碰到障碍。import java.awt.Dimension;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.s

14、wing.JPanel;import javax.swing.JTable;import java.awt.Color;import java.awt.GridLayout;import javax.swing.table.TableColumn;public class JTableDemopublic static void main (String args)/*构造函数有很多下面先介绍几个:JTable()JTable(int numRows, int numColumns)JTable(Object rowData, Object columnNames)*/JTable examp

15、le1 = new JTable ();/看不到但存在JTable example2 = new JTable (8, 6);final Object columnNames = 姓名, 性别, 家庭地址 ,/列名最好用 final 修饰电话号码, 生日, 工作, 收入, 婚姻状况, 恋爱状况 ;Object rowData = ddd, 男, 江苏南京, 1378313210, 03/24/1985, 学生, 寄生中, 未婚, 没,eee, 女, 江苏南京, 13645181705, xx/xx/1985, 家教, 未知, 未婚, 好象没,fff, 男, 江苏南京, 13585331486, 12/08/1985, 汽车推销员, 不确定, 未婚, 有 ,ggg, 女, 江苏南京, 81513779, xx/xx/1986, 宾馆服务员 , 确定但未知, 未婚, 有,hhh, 男, 江苏南京 , 13651545936, xx/xx/1985, 学生, 流放中, 未婚, 无数次分手后没有;JTable friends = new JTable (rowData, columnNames);friends.setPreferredScrollableViewportSi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号