Java、GirdLayout、ScrollPane 不工作

Java, GirdLayout, ScrollPane not working

我有两个 JTable,每个 JTable 都被添加到一个带有边框布局的容器(TableHeader 到 BoderLayout.PAGE_START,JTable 到中心)这些容器被添加到一个 JScrollPane。

将两个容器添加到具有网格布局的容器中,后者添加到 JPanel 的中心。

问题是,滚动条没有显示,或者如果强制滚动条一直显示,它就不起作用。 JTable 有超过 100 个条目,但只显示前 ~30 个条目。

我已经尝试搜索并找到了一些可能的修复方法,但它们没有用。我已经尝试使用首选大小,向 ScrollPane 添加布局和其他一些可能性,但没有任何效果。

Jtable部分代码:

        this.locations = new JTable(data, columnNames);
        this.locations.getTableHeader().setReorderingAllowed(false);
        this.locations.setDefaultEditor(Object.class, null);
//      this.locations.setPreferredSize(new Dimension(100, 100));

        Container table = new Container();
        table.setLayout(new BorderLayout());
        table.add(this.locations.getTableHeader(), BorderLayout.PAGE_START);
        table.add(this.locations, BorderLayout.CENTER);

        JScrollPane scrollPane = new JScrollPane(table);
        scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        this.content.add(scrollPane);

Locations 是 JTable,Content 是具有 Gridlayout 的 Container,然后将其添加到具有 BorderLayout 的 JPanel。

    Container table = new Container();
    table.setLayout(new BorderLayout());
    table.add(this.locations.getTableHeader(), BorderLayout.PAGE_START);
    table.add(this.locations, BorderLayout.CENTER);

上面的代码就不用了

您只需要:

    this.locations = new JTable(data, columnNames);
    JScrollPane scrollPane = new JScrollPane(table);
    this.content.add(scrollPane);