当前位置:编程学习 > JAVA >>

Java MFixedColumnTable (提供行标题栏的表格)

可以以一列或多列为行标题栏。

预览:

 \


 

代码:


[java] package com.han; 
 
import java.awt.BorderLayout; 
import java.util.Vector; 
 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.JViewport; 
import javax.swing.ListSelectionModel; 
import javax.swing.event.ListSelectionEvent; 
import javax.swing.event.ListSelectionListener; 
import javax.swing.table.AbstractTableModel; 
 
public class MFixedColumnTable extends JPanel { 
    /**
     * 
     */ 
    private static final long serialVersionUID = -8001758880985479654L; 
    private Vector<String> columnNameV; // declare the table column name vector  
    private Vector<Vector<Object>> tableValueV; // declare the table value  
                                                // vector  
    private int fixedColumn = 1; // the fixed column number  
    private JTable fixedColumnTable; 
    private FixedColumnTableModel fixedColumnTableModel; 
    private JTable floatingColumnTable; 
    private FloatingColumnTableModel floatingColumnTableModel; 
 
    private class FixedColumnTableModel extends AbstractTableModel { // inner class  
 
        /**
         * 
         */ 
        private static final long serialVersionUID = 3935656415101599023L; 
 
        @Override 
        public int getRowCount() { 
            // TODO Auto-generated method stub  
            return tableValueV.size(); 
        } 
 
        @Override 
        public int getColumnCount() { 
            // TODO Auto-generated method stub  
            return fixedColumn; 
        } 
 
        @Override 
        public Object getValueAt(int rowIndex, int columnIndex) { 
            // TODO Auto-generated method stub  
            return tableValueV.get(rowIndex).get(columnIndex); 
        } 
 
        @Override 
        public String getColumnName(int columnIndex) { 
            return columnNameV.get(columnIndex); 
        } 
    } 
 
    private class FloatingColumnTableModel extends AbstractTableModel { 
        /**
         * 
         */ 
        private static final long serialVersionUID = -2481466672947191281L; 
 
        @Override 
        public int getRowCount() { 
            return tableValueV.size(); 
        } 
 
        @Override 
        public int getColumnCount() { 
            return columnNameV.size() - fixedColumn; 
        } 
 
        @Override 
        public Object getValueAt(int rowIndex, int columnIndex) { 
            return tableValueV.get(rowIndex).get(columnIndex + fixedColumn); 
        } 
 
        @Override 
        public String getColumnName(int columnIndex) { 
            return columnNameV.get(columnIndex + fixedColumn); 
        } 
    } 
 
    private class MListSelectionListener implements ListSelectionListener { 
        boolean isFixedColumnTable = true; 
 
        public MListSelectionListener(boolean isFixedColumnTable) { 
            this.isFixedColumnTable = isFixedColumnTable; 
        } 
 
        @Override 
        public void valueChanged(ListSelectionEvent e) { 
            // TODO Auto-generated method stub  
            if (isFixedColumnTable) { 
                int row = fixedColumnTable.getSelectedRow(); 
                floatingColumnTable.setRowSelectionInterval(row, row); 
            } else { 
                int row = floatingColumnTable.getSelectedRow(); 
                fixedColumnTable.setRowSelectionInterval(row, row); 
            } 
        } 
    } 
 
    public MFixedColumnTable(Vector<String> columnNameV, 
            Vector

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,