1 public class JTableKnow_A extends JFrame
2 {
3 public JTableKnow_A()
4 {
5 this.setBounds(300, 100, 400, 300);
6 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
7
8 /****************************************************/
9 //实例化表格的第一种方式
10 JTable jTable01 = new JTable(3,4);
11 // this.add(jTable01);
12 //实例化表格的第二种方式
13 Object[][] tableData = new Object[3][4];
14 tableData[0] = new Object[]{"1-1","1-2","1-3","1-4"};
15 tableData[1] = new Object[]{"2-1","2-2","2-3","2-4"};
16 tableData[2] = new Object[]{"3-1","3-2","3-3","3-4"};
17 Object[] tableColName = new Object[]{"第一列名","第二列名","第三列名","第四列名"};
18 JTable jTable02 = new JTable(tableData,tableColName);
19 // this.add(jTable02);
20
21 //实例化表格的第三种方式:推荐
22 //1.先创建模型
23 DefaultTableModel defaultTableModel = new DefaultTableModel(tableData,tableColName);
24 //2.创建表格
25 JTable jTable03 = new JTable(defaultTableModel);
26 //3.声明滚动面板,用于显示表头,及实现表格数据的滚动显示
27 JScrollPane jScrollPane = new JScrollPane(jTable03);
28 this.add(jScrollPane);
29 /*************************表格显示的设置方法(附)***************************/
30 //设置字体、边框、背景色、边框色:略
31
32 //设置是否显示边框
33 jTable03.setShowGrid(true);
34 //设置被选择项字体颜色
35 jTable03.setSelectionForeground(Color.blue);
36 //设置被选择项背景颜色
37 jTable03.setSelectionBackground(Color.orange);
38 //设置表格排序
39 jTable03.setRowSorter(new TableRowSorter<DefaultTableModel>(defaultTableModel));
40 //禁止表头的拖拽:不允许用户随意的更改表头顺序,会造成数据顺序被破坏
41 jTable03.getTableHeader().setReorderingAllowed(false);
42 //设置行高:第一个参数表示索引,第二个参数表示行高,如:只有一个参数,则统一行高
43 jTable03.setRowHeight(30);
44 /*************************表格操作方法(高级)***************************/
45 //获取【列】模型
46 DefaultTableColumnModel defaultTableColumnModel = (DefaultTableColumnModel) jTable03.getColumnModel();
47 defaultTableColumnModel.addColumn(new TableColumn());
48 //获取某一列
49 TableColumn tableColumn = defaultTableColumnModel.getColumn(1);
50 //设置该列 列宽:设置列宽,推荐使用该方法,设置首选列宽
51 tableColumn.setPreferredWidth(30);
52 //获取所有列:迭代器,并进行迭代,而获取所有列
53 Enumeration<TableColumn> enumerationCol = defaultTableColumnModel.getColumns();
54 // while (enumerationCol.hasMoreElements())
55 // {
56 // //具体的操作
57 // }
58 //隐藏某一列的方法(重要)
59 tableColumn.setMinWidth(0);
60 tableColumn.setMaxWidth(0);
61 tableColumn.setPreferredWidth(0);
62 //对其列的数据:其中的参数,表示是那种数据类型要按照这种对其方式
63 DefaultTableCellRenderer defaultTableCellRenderer = (DefaultTableCellRenderer) jTable03.getDefaultRenderer(String.class);
64 defaultTableCellRenderer.setHorizontalAlignment(JLabel.CENTER);
65 //表头对其:同上,需要先获取表头,再获取渲染器,并设置对其方式
66
67 //添加行、移除行:在defaultTableModel操作即可
68
69 //设置选择表格行时,选择的模式:单选/多选
70 jTable03.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
71 //重新绑定、并载入表格数据(重要)
72 defaultTableModel.setDataVector(tableData, tableColName);
73 /*************************表格中右键弹出菜单的设置方法(高级)***************************/
74 //声明JPopupMenu类型菜单,并将菜单项加入其:类似一般的菜单设置方法
75 JPopupMenu jPopupMenu = new JPopupMenu();
76 JMenuItem jMenuItem = new JMenuItem("测试");
77 jPopupMenu.add(jMenuItem);
78 //将做好的菜单加入到表格的右键菜单中
79 jTable03.setComponentPopupMenu(jPopupMenu);
80 }
81 /************************************关于表格中的【监听器】**************************************/
82 /**
83 * 鼠标双击监听器
84 * @author Wfei
85 *
86 */
87 private class TableDoClick implements MouseListener
88 {
89 @Override
90 public void mouseClicked(MouseEvent e)
91 {
92 if (e.getClickCount() == 2)
93 {
94
95 }
96 }
97 @Override
98 public void mouseEntered(MouseEvent e){}
99 @Override
100 public void mouseExited(MouseEvent e){}
101 @Override
102 public void mousePressed(MouseEvent e){}
103 @Override
104 public void mouseReleased(MouseEvent e){}
105 }
106 /**
107 * 右键菜单监听器
108 * @author Wfei
109 *
110 */
111 private class MenuItemListener implements ActionListener
112 {
113 @Override
114 public void actionPerformed(ActionEvent e)
115 {
116
117 }
118 }
119 public static void main(String[] args)
120 {
121 JTableKnow_A jTableKnowA = new JTableKnow_A();
122 jTableKnowA.setVisible(true);
123 }
124 }