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小时内删除。