JAVA GUI学习

  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 }
原文地址:https://www.cnblogs.com/Wfei/p/3332714.html