gpt4 book ai didi

java - GridLayout 到 GridBagLayout 问题

转载 作者:行者123 更新时间:2023-11-30 09:11:54 25 4
gpt4 key购买 nike

所以我曾经是一名出色的 GUI 程序员,但我似乎已经失去了很多 GridBagLayout 知识。

我想做的是制作一个自定义框,其中包含 JPanel。我首先使用 GridLayout,但是根据我的研究,确实没有办法为每个框自定义“% 宽度/高度”,它只是将它们全部拉平。

所以我的第一次尝试导致了这个。

(网格布局) enter image description here

我继续环顾四周,我相信我需要使用 GridBagLayout。所以我花了一个小时看例子,我觉得我只是因为缺乏更好的词而“不明白”。我已经尝试为 GridBagLaout 实现各种测试代码,但我永远无法得到任何东西来完全满足我的需要。

我的问题是,有人可以给我一个我正在寻找的东西的框架设置吗?我不想要完整的代码,只想要基本的框架,这样我就可以尝试自己弄清楚(这样我实际上就“明白了”)。

所以所谓骨架,我的意思是只为我制作一个盒子,然后请简化每一步的操作,以便我可以尝试对其余盒子遵循相同的过程。

我希望最终得到的是......

(我想要的 GridBagLayout) enter image description here

就实际百分比而言,我正在考虑:

宽度:绿色/红色边为 80%,蓝色边为 20%。

高度:红色为 80%,绿色/白色为 20%。

我目前正在完成今天的一个项目,但我希望我能在今晚的某个时候开始做这件事。

非常感谢您以后的所有帮助!-奥斯汀

最佳答案

试试这个:

import java.awt.*;
import javax.swing.*;

public class GridBagDemo implements Runnable
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new GridBagDemo());
}

public void run()
{
JComponent redComp = new JPanel();
redComp.setBackground(Color.RED);

JComponent greenComp = new JPanel();
greenComp.setBackground(Color.GREEN);

JComponent blueComp = new JPanel();
blueComp.setBackground(Color.BLUE);

JComponent whiteComp = new JPanel();
whiteComp.setBackground(Color.WHITE);

GridBagConstraints gbc = new GridBagConstraints();
// we'll use this anchor/fill for all components
gbc.anchor = GridBagConstraints.NORTHWEST;
gbc.fill = GridBagConstraints.BOTH;

JPanel panel = new JPanel(new GridBagLayout());

gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 2;
gbc.gridheight = 1;
gbc.weightx = 0.8; // use 80% of the overall width
gbc.weighty = 0.8; // use 80% of the overall height
panel.add(redComp, gbc);

gbc.gridx = 2;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.gridheight = 2;
gbc.weightx = 0.2; // use 20% of the overall width
gbc.weighty = 1.0; // use 100% of the overall height
panel.add(blueComp, gbc);

gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.weightx = 0.8; // use 80% of the width used by green/white comps
gbc.weighty = 0.2; // use 20% of the overall height
panel.add(greenComp, gbc);

gbc.gridx = 1;
gbc.gridy = 1;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.weightx = 0.2; // use 20% of the width used by green/white comps
gbc.weighty = 0.2; // use 20% of the overall height
panel.add(whiteComp, gbc);

JFrame frame = new JFrame("GrigBag Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(panel);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}

关于java - GridLayout 到 GridBagLayout 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21883086/

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