0

这就是我所拥有的:一个由 JTabbedPane 组成的 Jframe(除了其他元素)。JTabbedPane 包含一个 JScrollPane 作为其选项卡之一。JScrollPane 有一个 JPanel。在 JPanel 中,将显示许多 JLabel 和 JTable。我使用 NetBeans 拖放 Swing 编辑器创建了 GUI。

每个 JTable 都包含在一个 JScrollPane 中。(IDE 已插入) 现在,JTable 的高度是固定的。因此,如果元素数量较少,则 JScrollPane 中会显示空白区域。如果元素数量更多,用户需要滚动包含 JTable 的 JScrollPane。JTable的水平滚动也是如此。如果窗口最大化,JTable 的宽度也会增加以占据整个可用区域。是否可以修改 GUI,使 JScrollPane 的高度变得尽可能大,以便在不滚动的情况下显示 JTable 的所有行?JTable 的宽度应尽可能大,以显示内容而无需水平滚动。如果 JTable 中的列数过多或元素数 ( JTable'

4

1 回答 1

0

使用 JTable 最简单的方法是将表添加到 JScrollPane 中,这样表头也会出现。您需要做的是将滚动窗格大小设置为表格的大小,以便您可以看到所有数据而看不到滚动条。代码将是:

JTable table = new JTable( ... );
table.setPreferredScrollableViewportSize(table.getPreferredSize());
JScrollPane scrollPane = new JScrollPane( table );
panel.add( scrollPane );

现在,如果面板的布局管理器尊重滚动面板的首选大小,您将看到表格的所有数据。

当然,如果您动态更改表中的数据,那么首选大小将会更改,因此更好的解决方案是覆盖getPreferredScrollableViewportSize(...)表以返回适当的值。

另一种方法是使用具有 BorderLayout 的面板。将表头添加到 NORTH,将表添加到 CENTER,然后将面板添加到选项卡式窗格。

于 2013-10-27T17:37:55.463 回答