我需要创建一个带有页脚行的 JTable(Java Swing)(它将包含每列数据的总和)。
具体需求如下:
- 页脚始终可见(如页眉):父 JScrollPane 应该只在页眉和页脚之间滚动(即实际数据)
- 表格列不可调整大小(这应该会让事情变得更容易)
- 根据屏幕分辨率,表格可以水平和/或垂直滚动
阅读类似的问题,似乎最好的方法是在主表下方添加第二个表(只有 1 行),这就是我所做的:
JPanel result = new JPanel(new BorderLayout());
SessionTable sessionTbl = null; //This is a JTable
AbstractSessionTableModel sessionTableModel = null;
JScrollPane sessionScrollPane = null;
(...)
//Inits scrollpane
sessionScrollPane = new JScrollPane(sessionTbl);
sessionScrollPane.setPreferredSize(new Dimension(100, 50));
sessionScrollPane.setBorder(BorderFactory.createEmptyBorder());
//Adds tables
result.add(sessionScrollPane, BorderLayout.CENTER);
//Adds footer table (which is also contained in a JScrollPane and has the same columns than the main table)
result.add(createSessionFooterTable(sessionTableModel), BorderLayout.SOUTH);
不幸的是,这种方法有两个问题(见图):
- 水平滚动只移动主表(即页脚不移动,因为它在不同的 JScrollPane 中)
- 水平滚动条出现在 2 个表格之间
然后我尝试了另一种方法:在将 2 个表添加到同一个 JPanel 中之前,将它们添加到一个通用的 JScrollPane 中。不幸的是,这种方法也有两个问题:
- 主表的标题不再可见
- 页脚行是滚动的一部分(即它并不总是可见)
任何帮助或提示将不胜感激!
非常感谢!托马斯