我有两个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。
答案 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);