JavaSwing_4.8:JTable (表格)
本⽂链接:
1. 概述官⽅JavaDocsApi:
JTable ,表格。 是⽤来显⽰和编辑常规⼆维单元表。
2. 创建简单的表格
结果展⽰:package com .xiets .swing ;import javax .swing .*;import java .awt .*;public class Main { public static void main (String [] args ) { JFrame jf = new JFrame ("测试窗⼝"); jf .setDefaultCloseOperation (WindowConstants .EXIT_ON_CLOSE ); // 创建内容⾯板,使⽤边界布局 JPanel panel = new JPanel (new BorderLayout ()); // 表头(列名) Object [] columnNames = {"姓名", "语⽂", "数学", "英语", "总分"}; // 表格所有⾏数据 Object [][] rowData = { {"张三", 80, 80, 80, 240}, {"John", 70, 80, 90, 240}, {"Sue", 70, 70, 70, 210}, {"Jane", 80, 70, 60, 210}, {"Joe", 80, 70, 60, 210} }; // 创建⼀个表格,指定 所有⾏数据 和 表头 JTable table = new JTable (rowData , columnNames ); // 把 表头 添加到容器顶部(使⽤普通的中间容器添加表格时,表头 和 内容 需要分开添加) panel .add (table .
getTableHeader (), BorderLayout .NORTH ); // 把 表格内容 添加到容器中⼼ panel .add (table , BorderLayout .CENTER ); jf .setContentPane (panel ); jf .pack (); jf .setLocationRelativeTo (null ); jf .setVisible (true ); }}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
表格组件和其他普通组件⼀样,需要添加到中间容器中才能显⽰,添加表格到容器中有两种⽅式:
1. 添加到普通的中间容器中(如上⾯代码实例所⽰的添加到JPanel ),此时添加的jTable 只是表格的⾏内容,表头(TableHeader())需要额外单独添加。此添加⽅式适合表格⾏数确定,数据量较⼩,能⼀次性显⽰完的表格;
2. 添加到JScrollPane 滚动容器中,此添加⽅式不需要额外添加表头,jTable 添加到jScrollPane 中后,表头⾃动添加到滚动容器的顶部,
并⽀持⾏内容的滚动(滚动⾏内容时,表头会始终在顶部显⽰)。
3. JTable 常⽤的操作⽅法
JTable常⽤构造⽅法:
JTable 字体 和 ⽹格 颜⾊设置:
JTable 表头 设置:// 创建空表格,后续再添加相应数据JTable () // 创建指定⾏列数的空表格,表头名称默认使⽤⼤写字母(A, B, C ...)依次表⽰JTable (int numRows , int numColumns ) // 创建表格,指定 表格⾏数据 和 表头名称JTable (Object [][] rowData , Object [] columnNames )// 使⽤表格模型创建表格JTable (TableModel dm )
1
2
3
4
5
6
7
8
9
10
11// 设置内容字体void setFont (Font font )// 设置字体颜⾊void setForeground (Color fg )// 设置被选
中的⾏前景(被选中时字体的颜⾊)void setSelectionForeground (Color selectionForeground )// 设置被选中的⾏背景void setSelectionBackground (Color selectionBackground )// 设置⽹格颜⾊void setGridColor (Color gridColor )// 设置是否显⽰⽹格void setShowGrid (boolean showGrid )// ⽔平⽅向⽹格线是否显⽰void setShowHorizontalLines (boolean showHorizontalLines )// 竖直⽅向⽹格线是否显⽰void setShowVerticalLines (boolean showVerticalLines )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
JTable ⾏列 相关设置:JTable 数据 相关操作:
// 获取表头JTableHeader jTableHeader = jTable .getTableHeader ();// 设置表头名称字体样式jTableHeader .setFont (Font font );// 设置表头名称字体颜⾊jTableHeader .setForeground (Color fg );// 设置⽤户是否可以通过在头间拖动来调整各列的⼤⼩。jTableHeader .setResizingAllowed (boolean resizingAllowed );// 设置⽤户是否可以拖动列头,以重新排序各列。jTableHeader .setReorderingAllowed (boolean reorderingAllowed );
1
2
3
4
5
6
7
8
9
10
11
12
13
14// 设置所有⾏的⾏⾼void setRowHeight (int rowHeight )// 设置指定⾏的⾏⾼void setRowHeight (i
nt row , int rowHeight )/** * 设置当⼿动改变某列列宽时,其他列的列宽⾃动调整模式,可选值: * JTable.AUTO_RESIZE_ALL_COLUMNS 在所有的调整⼤⼩操作中,按⽐例调整所有的列。 * JTable.AUTO_RESIZE_LAST_COLUMN 在所有的调整⼤⼩操作中,只对最后⼀列进⾏调整。 * JTable.AUTO_RESIZE_NEXT_COLUMN 在 UI 中调整了⼀个列时,对其下⼀列进⾏相反⽅向的调整。 * JTable.AUTO_RESIZE_OFF 不⾃动调整列的宽度;使⽤滚动条。 * JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS 在 UI 调整中,更改后续列以保持总宽度不变;此为默认⾏为。 */void setAutoResizeMode (int mode )/* * 调整列宽 */// 先获取到某列TableColumn tableColumn = jTable .getColumnModel ().getColumn (int columnIndex );// 设置列的宽度、⾸选宽度、最⼩宽度、最⼤宽度tableColumn .setWidth (int width );tableColumn .setPreferredWidth (int preferredWidth );tableColumn .setMinWidth (int minWidth );tableColumn .setMaxWidth (int maxWidth );// 调整该列的列宽,以适合其标题单元格的宽度。tableColumn .sizeWidthToFit ();// 是否允许⼿动改变该列的列宽tableColumn .setResizable (boolean isResizable );// 设置该列的表头名称tableColumn .setHeaderValue (Object headerValue );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35/* * 表格数据的简单设置和获取 */// 设置表格中指定单元格的数据jTable .getModel ().setValueAt (Object aValue , int rowIndex , int columnIndex );// 获取表格中指定单元格的数据Object value = jTable .getModel ().getValueAt (int rowIndex , int columnIndex );
1
2
3
4
5
6
7
8
4. 创建带滚动条的表格
创建带滚动条的表格基本步骤:
完整实例代码:// 创建表格JTable table = new JTable (...);/* 设置表格相关数据 */// 设置滚动⾯板视⼝⼤
⼩(超过该⼤⼩的⾏数据,需要拖动滚动条才能看到)table .setPreferredScrollableViewportSize (new Dimension (int width , int height ));// 创建滚动⾯板,把 表格 放到 滚动⾯板 中(表头将⾃动添加到滚动⾯板顶部)JScrollPane scrollPane = new JScrollPane (table );/* 再把滚动⾯板 scrollPane 添加到其他容器中显⽰ */
1
2
3
4
5
6
7
8
9
10
11
12package com .xiets .swing ;import javax .swing .*;import java .awt .*;public class Main { public static void main (String [] args ) { JFrame jf = new JFrame ("测试窗⼝"); jf .setDefaultCloseOperation (WindowConstants .EXIT_ON_CLOSE ); // 创建内容⾯板 JPanel panel = new JPanel (); // 表头(列名) String [] columnNames = {"序号", "姓名", "语⽂", "数学", "英语", "总分"}; // 表格所有⾏数据 Object [][] rowData = { {1, "张三", 80, 80, 80, 240}, {2, "John", 70, 80, 90, 240}, {3, "Sue", 70, 70, 70, 210}, {4, "Jane", 80, 70, 60, 210}, {5, "Joe_05", 80, 70, 60, 210}, {6, "Joe_06", 80, 70, 60, 210}, {7, "Joe_07", 80, 70, 60, 210}, {8, "Joe_08", 80, 70, 60, 210}, {9, "Joe_09", 80, 70, 60, 210}, {10, "Joe_10", 80, 70, 60, 210}, {11, "Joe_11", 80, 70, 60, 210}, {12, "Joe_12", 80, 70, 60, 210}, {13, "Joe_13", 80, 70, 60, 210}, {14, "Joe_14", 80, 70, 60, 210}, {15, "Joe_15", 80, 70, 60, 210}, {16, "Joe_16", 80, 70, 60, 210}, {17, "Joe_17", 80, 70, 60, 210}, {18, "Joe_18", 80, 70, 60, 210},
{19, "Joe_19", 80, 70, 60, 210}, {20, "Joe_20", 80, 70, 60, 210} }; // 创建⼀个表格,指定 表头 和 所有⾏数据 JTable table = new JTable (rowData , columnNames ); // 设置表格内容颜⾊
1
2
3
javaswing实现购买4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
结果展⽰:
5. 表格模型(TableModel )
TableModel 接⼝指定了 JTable ⽤于询问表格式数据模型的⽅法。TableModel 封装了表格中的各种数据,为表格显⽰提供数据。上⾯案例中直接使⽤⾏数据和表头创建表格,实际上JTable 内部⾃动将传⼊的⾏数据和表头封装成了 TableModel。
只要数据模型实现了 TableModel 接⼝,就可以通过以下两⾏代码设置 JTable 显⽰该模型: table .setForeground (Color .BLACK ); // 字体颜⾊ table .setFont (new Font (null , Font .PLAIN , 14)); // 字体样式 table .setSelectionForeground (Color .DARK_GRAY ); // 选中后字体颜⾊ table .setSelectionBackground (Color .LIGHT_GRAY ); // 选中后字体背景 table .setGridColor (Color .GRAY ); // ⽹格颜⾊ // 设置表头 table .getTableHeader ().setFont (new Font (null , Font .BOLD , 14)); // 设置表头名称字体样式 table .getTableHeader ().setForeground (Color .RED ); // 设置表头名称字体颜⾊ table .getTableHeader ().setResizingAllowed (false ); // 设置不允许⼿动改变列宽 table .getTableHeader ().setReorderingAllowed (false ); // 设置不允许拖动重新排序各列 // 设置⾏⾼ table .setRowHeight (30); // 第⼀列列宽设置为40 table .getColumnModel ().getColumn (0).setPreferredWidth (40); // 设置滚动⾯板视⼝⼤⼩(超过该⼤⼩的⾏数据,需要拖动滚动条才能看到) table .setPreferredScrollableViewportSize (new Dimension (400, 300)); // 把 表格
放到 滚动⾯板 中(表头将⾃动添加到滚动⾯板顶部) JScrollPane scrollPane = new JScrollPane (table ); // 添加 滚动⾯板 到 内容⾯板 panel .add (scrollPane ); // 设置 内容⾯板 到 窗⼝ jf .setContentPane (panel ); jf .pack (); jf .setLocationRelativeTo (null ); jf .setVisible (true ); }}
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论