【问题标题】:Displaying a JTable without vertical and horizontal scroll bars but showing all the rows and columns显示没有垂直和水平滚动条但显示所有行和列的 JTable
【发布时间】:2013-11-06 00:45:35
【问题描述】:

这就是我所拥有的:一个由 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's 和 JLabel's)数量太多,则滚动项将通过 JScrollPane 的滚动条完成(JTabbedPane 的)

【问题讨论】:

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

标签: java swing jtable jscrollpane


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    相关资源
    最近更新 更多