gpt4 book ai didi

java - GridBag布局辅助

转载 作者:行者123 更新时间:2023-12-02 07:30:28 27 4
gpt4 key购买 nike

我尝试了所有组合并查看了所有文档,但我不知道如何使用 GridBagLayout。

我在 JPanel 中有 3 个组件,其中 GridBagLayout 作为 JPanel 的 LayoutManager,并在这 3 个组件上使用 GridBagConstraints。

使用当前代码(如下所示),3 个元素可以正确显示在面板上。问题是第一个组件是 JLabel,有时会很长,如果是这种情况,它会扩展并使其他 2 个组件变小。

我的目标是拥有一个具有 1 行和 4 列的 GridBagLayout 的 JPanel,其中第一个元素占据前 2 列,其他 2 个元素占据剩余的 2 列,并且这些元素不会展开从他们的专栏中出来。

private static void setConstraints(GridBagConstraints constraints, int gridx, int gridy, int weightx, Insets insets) {
constraints.gridx = gridx;
constraints.weightx = weightx;
constraints.insets = insets;
}

gridBagLayout = new GridBagLayout();
constraints = new GridBagConstraints();
centerPanel = new JPanel(gridBagLayout);

constraints.fill = GridBagConstraints.HORIZONTAL;
fileNameLabel = new JLabel("Resolving: '" + EngineHelpers.trimStringToFitPanel(urlTextField.getText(), 70) + "'");
setConstraints(constraints, 0, 0, 2, new Insets(0, 5, 5, 0));
gridBagLayout.setConstraints(fileNameLabel, constraints);
progressBar = new JProgressBar();
progressBar.setStringPainted(true);
setConstraints(constraints, 1, 0, 1, new Insets(0, 5, 5, 0));
gridBagLayout.setConstraints(progressBar, constraints);
cancelDownloadButton = new JButton("Cancel");
setConstraints(constraints, 2, 0, 1, new Insets(0, 0, 0, 0));
gridBagLayout.setConstraints(cancelDownloadButton, constraints);

centerPanel.add(fileNameLabel);
centerPanel.add(progressBar);
centerPanel.add(cancelDownloadButton);

提前感谢大家,抱歉问了这个愚蠢的问题!

最佳答案

您可能希望将按钮和进度条的 weightx 设置为 0。对于标签,将权重设置为 1。这将阻止按钮和进度条完全展开,并让进度条占据所有额外空间。

还将进度条约束上的 gridwidth 设置为 2,这样它实际上使用 2 列。

最后,根据 centerPanel 的放置位置,它可能不会实际扩展以填充容器。如果将 centerPanel 放置在具有 BorderLayout 的父级中,它应该展开。为了确保这一点,您可以使用 centerPanel.setBorder(BorderFactory.createLineBorder(Color.RED)) 添加边框进行调试。这对于按钮、标签和进度条也很有用。

关于java - GridBag布局辅助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12987929/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com