Java使用自定义的tableModel,设置可编辑方式 (二)

2014-11-24 08:41:49 · 作者: · 浏览: 7
.ListSelectionListener;
import javax.swing.table.AbstractTableModel;

/**
*

public boolean isCellEditable(int row, int column) {


return getModel().isCellEditable(convertRowIndexToModel(row),


convertColumnIndexToModel(column));


}



* so we can also directly rewrite the isCellEditable() in the table model.
*
* @author HAN
*
*/
public class MFixedColumnTable_Modified extends JPanel {
/**
*
*/
private static final long serialVersionUID = -8001758880985479654L;
private Vector columnNameV; // declare the table column name vector
private Vector> tableva lueV; // 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 tableva lueV.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 tableva lueV.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 boolean isCellEditable(int row, int column) {
return true;
}

@Override
public int getRowCount() {
return tableva lueV.size();
}

@Override
public int getColumnCount() {
return columnNameV.size() - fixedColumn;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return tableva lueV.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();
floatingColumnT