JAVA GUI学习 - JTable表格组件学习_A ***
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 }