我似乎无法使我的Java Swing组件正确地协同工作.
我想要做的是,JPanel填充JTabbedPane内的所有可用空间.目前,我的设置如下:
public class Gui extends JFrame {
private final EventBus eventBus = EventBus.getInstance();
private final ToolkitUtil toolkitUtil;
private final Menu menu;
private final InfoBar infoBar;
private final JTabbedPane pane;
...
private void buildLayout() {
GridBagConstraints gbc = new GridBagConstraints();
setJMenuBar(menu);
add(pane, BorderLayout.CENTER);
add(infoBar, BorderLayout.SOUTH);
pane.addTab("Plugins", new PluginPanel());
}
}
public class PluginPanel extends JPanel {
private final JPanel modelPanel;
private final JPanel editorPanel;
public PluginPanel() {
setLayout(new GridBagLayout());
modelPanel = new JPanel(new GridBagLayout());
editorPanel = new JPanel(new GridBagLayout());
buildLayout();
}
private void buildLayout() {
GridBagConstraints gbc = new GridBagConstraints();
modelPanel.setBorder(BorderFactory.createTitledBorder("Models"));
editorPanel.setBorder(BorderFactory.createTitledBorder("Editors"));
gbc.gridx = 0;
gbc.fill = GridBagConstraints.BOTH;
modelPanel.add(new JLabel("test label"), gbc);
add(modelPanel, gbc);
gbc.gridx = 1;
add(editorPanel, gbc);
}
}
Run Code Online (Sandbox Code Playgroud)
这将创建一个我所需大小的窗口(与屏幕大小成比例,不包含在上面的代码中).放置在中心的选项卡面板将展开以填充所需的所有空间,这正是我想要的.但是,我在选项卡面板中添加的面板仅与其内容一样大.如果我添加标签或任何东西,它只会增加与组件一样大.我希望它们始终可以扩展以填充选项卡面板.
per*_*erp 36
尝试将GridBagConstraints的权重设置为非零值:
gbc.weightx = gbc.weighty = 1.0;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50508 次 |
| 最近记录: |