0

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

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

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);
    }
}

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

我该如何修复(使表格填满整个可用空间)?

截图 1

截图 2

4

2 回答 2

9

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

JPanel companiesPanel = new JPanel(new GridLayout());
于 2013-10-19T14:46:57.427 回答
7

有两个问题:

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

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

table.setFillsViewportHeight(true);
于 2013-10-19T15:05:28.860 回答