这就是我所拥有的:一个由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中的列数太多,或者JPanel(JTabbedPane的JScrollPane中)的元素数量(JTable和JLabel)太多,那么滚动项目将通过JScrollPane的滚动条完成(JTabbedPane)
答案 0 :(得分:0)
使用JTable的最简单方法是将表添加到JScrollPane,以便还显示表头。您需要做的是将scrollpanes大小设置为表的大小,以便您可以查看所有数据,但看不到滚动条。代码是:
JTable table = new JTable( ... );
table.setPreferredScrollableViewportSize(table.getPreferredSize());
JScrollPane scrollPane = new JScrollPane( table );
panel.add( scrollPane );
现在,如果面板的布局管理器尊重滚动窗格的首选大小,您将看到该表的所有数据。
当然,如果您动态更改表中的数据,那么首选大小将会更改,因此更好的解决方案是覆盖表的getPreferredScrollableViewportSize(...)
以返回适当的值。
另一种方法是使用带有BorderLayout的面板。将表头添加到NORTH,将表添加到CENTER,然后将面板添加到选项卡式窗格。