java 行标题栏的表格_提供行标题的表格

packagetest;importjava.awt.BorderLayout;importjava.util.Vector;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTable;importjavax.swing.JViewport;importjavax.swing.ListSelectionModel;importjavax.swing.event.ListSelectionEvent;importjavax.swing.event.ListSelectionListener;importjavax.swing.table.AbstractTableModel;public class MFixedColumnTable extendsJPanel {/****/

private static final long serialVersionUID = -8001758880985479654L;private Vector columnNameV; //declare the table column name vector

private Vector> tableValueV; //declare the table value//vector

private int fixedColumn = 1; //the fixed column number

privateJTable fixedColumnTable;privateFixedColumnTableModel fixedColumnTableModel;privateJTable floatingColumnTable;privateFloatingColumnTableModel floatingColumnTableModel;private class FixedColumnTableModel extends AbstractTableModel { //inner class

/****/

private static final long serialVersionUID = 3935656415101599023L;

@Overridepublic intgetRowCount() {//TODO Auto-generated method stub

returntableValueV.size();

}

@Overridepublic intgetColumnCount() {//TODO Auto-generated method stub

returnfixedColumn;

}

@Overridepublic Object getValueAt(int rowIndex, intcolumnIndex) {//TODO Auto-generated method stub

returntableValueV.get(rowIndex).get(columnIndex);

}

@Overridepublic String getColumnName(intcolumnIndex) {returncolumnNameV.get(columnIndex);

}

}private class FloatingColumnTableModel extendsAbstractTableModel {/****/

private static final long serialVersionUID = -2481466672947191281L;

@Overridepublic intgetRowCount() {returntableValueV.size();

}

@Overridepublic intgetColumnCount() {return columnNameV.size() -fixedColumn;

}

@Overridepublic Object getValueAt(int rowIndex, intcolumnIndex) {return tableValueV.get(rowIndex).get(columnIndex +fixedColumn);

}

@Overridepublic String getColumnName(intcolumnIndex) {return columnNameV.get(columnIndex +fixedColumn);

}

}private class MListSelectionListener implementsListSelectionListener {boolean isFixedColumnTable = true;public MListSelectionListener(booleanisFixedColumnTable) {this.isFixedColumnTable =isFixedColumnTable;

}

@Overridepublic voidvalueChanged(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(VectorcolumnNameV,

Vector> tableValueV, intfixedColumn) {super();

setLayout(newBorderLayout());this.columnNameV =columnNameV;this.tableValueV =tableValueV;this.fixedColumn =fixedColumn;//create fixedColumnTable

fixedColumnTableModel = newFixedColumnTableModel();

fixedColumnTable= newJTable(fixedColumnTableModel);

ListSelectionModel fixed=fixedColumnTable.getSelectionModel();

fixed.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

fixed.addListSelectionListener(new MListSelectionListener(true));//create floatingColumnTable

floatingColumnTableModel = newFloatingColumnTableModel();

floatingColumnTable= newJTable(floatingColumnTableModel);

floatingColumnTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

ListSelectionModel floating=floatingColumnTable.getSelectionModel();

floating.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

floating.addListSelectionListener(new MListSelectionListener(false));//create scrollPane

JScrollPane scrollPane = newJScrollPane();

scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER,

fixedColumnTable.getTableHeader());

JViewport viewport= newJViewport();

viewport.setView(fixedColumnTable);

viewport.setPreferredSize(fixedColumnTable.getPreferredSize());

scrollPane.setRowHeaderView(viewport);//viewport 视口

scrollPane.setViewportView(floatingColumnTable);

add(scrollPane, BorderLayout.CENTER);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值