【发布时间】:2014-04-01 22:16:51
【问题描述】:
我正在创建一个包含菜单、工具栏、表格和按钮面板的 JFrame 应用程序。我想使用滚动窗格作为顶级容器,这样如果用户调整应用程序的大小,按钮等就不会从屏幕上掉下来。
这是我的主框架的构造函数代码:
JPanel mainPanel = new JPanel(); // borderlayout, north=toolbar, center=table, south=buttton panel
mainPanel.setLayout(new BorderLayout());
mainPanel.setBorder(BorderFactory.createEmptyBorder());
mainPanel.add(new MainToolBar(inventoryActions, false), BorderLayout.NORTH);
InventoryTable inventoryTable = new InventoryTable();
JScrollPane tableScrollPane = new JScrollPane(new JTable());
mainPanel.add(new JScrollPane(tableScrollPane), BorderLayout.CENTER);
mainPanel.add(tableScrollPane, BorderLayout.CENTER);
inventoryTable.adjustColumnWidths();
mainPanel.add(new InventoryActionsButtonPanel(inventoryActions), BorderLayout.SOUTH);
JScrollPane mainScrollPane = new JScrollPane();
mainScrollPane.setBorder(BorderFactory.createEmptyBorder());
mainScrollPane.setViewportView(mainPanel);
getContentPane().add(mainScrollPane, BorderLayout.CENTER);
如您所见.. 我使用 JPanel 来包含工具栏、表格(嵌套在另一个滚动窗格中)和按钮面板。然后我把这个面板放在主滚动面板里面。最后,我将主滚动窗格添加到内容窗格。
我的应用程序的初始大小是 800x600。当我运行它时,一切看起来都很好。截图如下:
但是,当我调整框架大小时,滚动面板会在框架变小之前“激活”,如您在此处看到的:
知道为什么我的滚动面板在框架仍然那么大的情况下显示滚动条吗?我必须设置一些首选尺寸吗?
谢谢。
请注意,如果我注释掉将滚动疼痛添加到主面板(中心)的代码行,或者如果我使用另一个摆动组件,例如 JButton,它的行为就不会像以前那样:
//mainPanel.add(tableScrollPane, BorderLayout.CENTER);
这是截图:
【问题讨论】:
-
JTables 首选的可滚动大小是问题的一部分
-
所以我应该使用 table.setPreferredSize...?
标签: java resize jframe scrollbars scrollpane