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 ,