【问题标题】:How to make a JTable fill entire available space?如何让 JTable 填满整个可用空间?
【发布时间】:2013-10-19 14:39:01
【问题描述】:

我想创建一个带有表格的面板,它填满了整个可用空间。

我使用以下代码进行此操作:

public class MyFrame extends JFrame {
    public EconomyFrame() throws HeadlessException {
        super("...");

        final JTabbedPane tabbedPane = new JTabbedPane();

        add(tabbedPane);

        final JPanel companiesPanel = new JPanel();

        final CompaniesTableModel companiesModel = new CompaniesTableModel
                (ApplicationStateSingleton.INSTANCE.getPersistence().getCompanies());

        final JTable companiesTable = new JTable(companiesModel);

        ApplicationStateSingleton.INSTANCE.getEventBus().subscribeToPropertyChanges(companiesModel);

        companiesPanel.add(new JScrollPane(companiesTable));

        tabbedPane.addTab("Companies", companiesPanel);
    }
}

但它不起作用,因为当我调整框架大小时,表格只填充了部分可用空间(参见下面的屏幕截图)。

我该如何解决(让表格填满整个可用空间)?

【问题讨论】:

  • 你的代码没有编译,构造函数需要匹配类名。通过发布 SSCCE 来帮助那些回答的人

标签: java swing jtable layout-manager preferredsize


【解决方案1】:

使用允许JTable 占据整个可用区域的布局管理器,而不是JPanel 使用的默认FlowLayout,后者仅使用其组件的首选尺寸

JPanel companiesPanel = new JPanel(new GridLayout());

【讨论】:

    【解决方案2】:

    有两个问题:

    1) 首先,您需要使用适当的布局管理器来确保滚动窗格可以调整大小以填充可用区域。通常人们会将滚动窗格添加到 BorderLayout 的 CENTER。

    2)您需要让表格填充滚动窗格视口中的可用空间。为此,您可以使用:

    table.setFillsViewportHeight(true);
    

    【讨论】:

      猜你喜欢
      • 2011-12-16
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多