JTable 單元格嵌入checkbox

       首先,DefaultTableModel仍是要重寫的,不過能夠不用重寫整個類,只要寫一個繼承DefaultTableModel的類,裏面添加你要的響應函數就好了。代碼以下
      class AddCheckboxTableModel extends DefaultTableModel{ 
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        public MyTableModel(Object[][] data,String[] columns)
        { super(data,columns); } 
        public boolean isCellEditable(int row,int column){ //設置Table單元格是否可編輯
            if(column==0)return true;        
            return false; 
        } 
        public Class<?> getColumnClass(int columnIndex) 
        { 
            if(columnIndex==0)
            { return Boolean.class; 
            } 
            return Object.class; 
        } 
    }

   而後,在構建Jtable的時候就用這個datamodel,構建方法示例:
          String[] columnNames = {"Check","ID","Name","Sex","Status","Entry-Date"};                
        Object[][] tableData = new Object[employeeList.size()][6];
        for(int i =0; i<employeeList.size();i++)
        {
            tableData[i][0]=new Boolean(false);//用boolean就能夠把第一列顯示爲checkBox,這是JTable特有的功能
            tableData[i][1]=employeeList.get(i).getEmployeeID();
            tableData[i][2]=employeeList.get(i).getName();
            tableData[i][3]=employeeList.get(i).getSex();
            tableData[i][4]=employeeList.get(i).getStatus();
            tableData[i][5]=employeeList.get(i).getEntryDay();            
        }
        AddCheckboxTableModel tableModel = new  AddCheckboxTableModel (tableData, columnNames);
        table.setModel(tableModel);
        table.setPreferredScrollableViewportSize(new Dimension(500, 300));
        table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
        table.setBounds(30,30,500,300);
        table.setRowHeight (25);

        這樣就能夠構建一個Table,除了第一列,其餘列都是不可編輯的。
        若是想要爲能夠勾選的同時響應行點擊事件,能夠這樣作:
        table.addMouseListener(adapter);
        table.repaint();
        table.updateUI();

        private MouseAdapter adapter = new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
             int row=table.getSelectedRow();  
            if(table.getSelectedColumn()==0)//若是是第一列的單元格,則返回,不響應點擊
                return;
        }
相關文章
相關標籤/搜索