Java,GirdLayout,ScrollPane无法正常工作

时间:2017-06-01 09:10:39

标签: java swing jscrollpane grid-layout jscrollbar

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

将两个容器添加到具有Gridlayout的Container中,该Gridlayout将添加到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。

1 个答案:

答案 0 :(得分:1)

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