java - GridBagLayout 中的项目未正确对齐
问题描述
我正在尝试对齐 GridBagLayout 中的 3 个项目,其中 2 个项目位于顶部,1 个项目位于底部。两个项目应该是相同的大小。我试图用 BorderLayout 和 GridBagLayout 来实现这一点,但没有运气。
这是我对 GridBagLayout 的尝试,您可以看到它们没有正确对齐。这就是我试图做的。
Add first item
Set the x to 1
Add second item
Set the y to 1
Add the last item
我希望这会起作用,因为这对我来说没有意义,为什么这不起作用,这是它的代码。
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
JTextField oldPkg = new JTextField();
container.add(oldPkg, gbc);
gbc.gridx = 1;
JTextField newPkg = new JTextField();
gbc.gridy = 1;
JTextField apkPath = new JTextField();
container.add(apkPath, gbc);
我想要达到的结果是
我已经使用 FlowLayout 实现了它,但是在调整框架大小时它不会重新打包,并且底部栏有点大。
如何使用 GridBagLayout 或任何其他布局来实现这一点,以便在大小更改时保持不变?
解决方案
有时,您需要退后一步,尝试不同的方法。也许从一张纸开始,您可以在其中绘制布局并绘制约束。
这将引导您理解apkPath
需要从两列开始x
并0
“跨越”两列。
当前apkPath
使用的x
位置与 相同newPkg
,您需要在再次使用之前更改它。
gbc.gridy = 1;
gbc.gridx = 0;
JTextField apkPath = new JTextField();
container.add(apkPath, gbc);
好的,但现在它的大小与 相同oldPkg
,我们需要告诉GridBagLayout
我们要跨越多个列
gbc.gridy = 1;
gbc.gridx = 0;
gbc.gridwidth = 2;
JTextField apkPath = new JTextField();
container.add(apkPath, gbc);
现在应该允许文本字段流过两列
我可能会建议查看如何使用 GridBagLayout了解更多详细信息
推荐阅读
- oracle - 如何跟踪 Oracle 中启动的 SQL 查询?
- reactjs - 在 material-ui Accordian 崩溃时从 DOM 中移除 AccordianDetails 组件
- javascript - 单击按钮后,列表中选中的复选框应消失
- python-3.x - 以任意顺序从 a 列获取 b 列中找到的字符串的计数,并在新列中返回计数
- python - Python 使用 python 请求登录到 ASPX 网站
- elasticsearch - Kibana 交互式输入 - 如何浏览我的所有数据?
- sql - 如何比较相似数据
- java - 使用 Intellij 调试测试时如何跳过测试,在调试之前安装包
- python - 添加音频背景时出现moviepy错误
- ip-address - 从相同 IP 地址提交的 reCaptcha v3 问题