Java 显示不带垂直和水平滚动条的JTable,但显示所有行和列

Java 显示不带垂直和水平滚动条的JTable,但显示所有行和列,java,swing,jtable,jscrollpane,Java,Swing,Jtable,Jscrollpane,这就是我拥有的:一个由JTabbedPane(除其他元素外)组成的Jframe。JTabbedPane包含一个JScrollPane作为其选项卡之一。JScrollPane有一个JPanel。在JPanel中,将显示许多JLabel和JTable。我已经使用NetBeans拖放Swing编辑器创建了GUI 每个JTable都包含在一个JScrollPane中。(IDE已经插入)现在,JTable的高度是固定的。因此,如果元素数量较少,则JScrollPane中会显示空白。如果元素的数量更多,用户

这就是我拥有的:一个由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的)的滚动条滚动项目

使用JTable最简单的方法是将表添加到JScrollPane中,以便同时显示表头。您需要做的是将scrollpanes的大小设置为表的大小,这样您就可以看到所有数据,而不会看到滚动条。守则是:

JTable table = new JTable( ... );
table.setPreferredScrollableViewportSize(table.getPreferredSize());
JScrollPane scrollPane = new JScrollPane( table );
panel.add( scrollPane );
现在,如果面板的布局管理器尊重滚动窗格的首选大小,那么您将看到表中的所有数据

当然,如果动态更改表中的数据,则首选大小将更改,因此更好的解决方案是重写表的
getPreferredScrollableViewportSize(…)
,以返回适当的值


另一种方法是使用带有边框布局的面板。将表格标题添加到北部,将表格添加到中部,然后将面板添加到选项卡式窗格。

不要将其添加到滚动窗格?@MadProgrammer为此,我需要更改代码还是可以通过NetBeans Swing GUI编辑器本身进行更改?您可以通过编辑器进行更改,但您需要从滚动窗格中删除表格,然后删除滚动窗格。这也将删除列标题