我想创建一个带有表的面板,它填满了整个可用空间。
我使用以下代码执行此操作:
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);
}
}
但它不起作用,因为当我调整框架大小时,表格只填充部分可用空间(参见下面的屏幕截图)。
如何修复(使表格填满整个可用空间)?
答案 0 :(得分:8)
使用布局管理器,JTable
占据整个可用区域,而不是FlowLayout
使用的默认JPanel
,JPanel companiesPanel = new JPanel(new GridLayout());
仅使用其组件首选大小
{{1}}
答案 1 :(得分:6)
有两个问题:
1)首先,您需要使用适当的布局管理器,以确保滚动窗格可以调整大小以填充可用区域。通常人们会将滚动窗格添加到BorderLayout的CENTER。
2)您需要让表格填充滚动窗格视口中的可用空间。为此,您可以使用:
table.setFillsViewportHeight(true);