固定JTable中的前几列
2009-09-23 00:00:00 来源:WEB开发网接下来就是鼠标等一些事件来监听画出固定列的信息了。当捕捉到需要将固定的列固定住,就调用如下方法:
/** *//**
*固定列
*利用JLayeredPane使其显示在JTable之上
**/
public void freeze() {
JLayeredPane pane = table.getRootPane().getLayeredPane();
if (added) {
pane.remove(fixedColumns);
}
pane.add(fixedColumns, JLayeredPane.POPUP_LAYER);
setBoundsOnFrozenColumns();
added = true;
fixedColumns.setVisible(true);
}
还有一些繁杂的计算ixedColumns的位置大小大家可以下载代码自己看了,大致原理就是如此简单,就是利用JLayeredPane层的概念,用起来也很方便,只需要在原有的代码传入JTable,以及装在这个JTable的JScrollPane,如
JTable table = new JTable(data, columnNames);
JScrollPane scrollPane = new JScrollPane(table);
FixTableManager tableHeader = new FixTableManager(table,scrollPane);
//固定前三列
tableHeader.setFixCol(2);
总之这样能忽悠成看起来像是固定了,那它也有感觉不带劲的地方,大家如有兴趣,可以在下面的链接中下载代码,运行其看看效果 ,效果是Scrollbar不会的最小值停留的位置不是在固定列的最后位置,随之scrollbar的拖动,我们可以看到有的列会被固定的列挡住,正如前面所说,这个所谓的固定是个假象。还有一些缺点如有的皮肤可能算出来的结果会和原有的Table看起来不一致等。
本文示例源代码或素材下载
更多精彩
赞助商链接