如何使用GridBagConstraints创建布局?

2023-12-06

我想像这样布局我的 JPane:

-------
|     |
|     |
|     |
-------
|     |
-------

这样,顶部部分比底部部分更大/更高(顶部部分由另一个 JPanel 组成,并使用 Graphics 对象来显示图像,而底部部分也由另一个 JPanel 组成,但使用 Graphics 对象来绘制一些线条和文字)。

我听说最好的方法是使用 GridBagLayout 和 GridBagConstraints。

我正在尝试找出 GridBagConstraints 的适当属性,但遇到了一些困难。这就是我到目前为止所拥有的......

对于顶部部分,我有:

gridx = 0
gridy = 0
weighty = 1.0; // expand downwards, because the bottom should never expand in the Y direction
fill = GridBagConstraints.BOTH

对于底部部分,我有:

gridx = 0
gridy = 1
fill = GridBagConstraints.HORIZONTAL
anchor = GridBagConstraints.PAGE_END

不幸的是,最终发生的所有事情都是出现一个大的灰色矩形(我的应用程序有白色背景) - 没有图像加载,没有线条/文本出现。

我应该怎么办?我应该调整什么?

我读过一些教程,但它看起来真的很令人困惑,我在我的第一个应用程序中让它工作,但现在当我尝试这样做时,它似乎对我不起作用。


一般来说,对于gridbag布局

  • 如果您想要组件缩放,则必须为其缩放方向指定权重,并且您为该方向设置的任何尺寸(宽度/高度)都将被布局管理器忽略。

  • 如果您不想要组件比例,则必须定义组件的大小(如果需要,您可以在 java 文档中深入研究此主题)。对于底部面板,您至少需要给出其首选高度。

这可以按照你的期望工作

pnlTop.setBackground(Color.WHITE);
pnlBottom.setBackground(Color.BLUE);

// Because you don't want the bottom panel scale, you need to give it a height.
// Because you want the bottom panel scale x, you can give it any width as the
// layout manager will ignore it.
pnlBottom.setPreferredSize(new Dimension(1, 20));


getContentPane().setLayout(new GridBagLayout());
GridBagConstraints cst = new GridBagConstraints();
cst.fill = GridBagConstraints.BOTH;
cst.gridx = 0;
cst.gridy = 0;
cst.weightx = 1.0; // --> You miss this for the top panel
cst.weighty = 1.0;
getContentPane().add(pnlTop, cst);

cst = new GridBagConstraints();
cst.fill = GridBagConstraints.HORIZONTAL;
cst.gridx = 0;
cst.gridy = 1;
cst.weightx = 1.0; // You miss this for the bottom panel
cst.weighty = 0.0;
getContentPane().add(pnlBottom, cst);

此外,如果你想使用 gridbag 布局,我建议你尝试 painless-gridbag 库http://code.google.com/p/painless-gridbag/(我是该库的作者)。它不能为您解决这个问题(因为您的问题涉及在 gridbag 布局中管理组件的大小),但它会节省您大量的输入并使您的代码更易于维护

pnlBottom.setPreferredSize(new Dimension(1, 20));

PainlessGridBag gbl = new PainlessGridBag(getContentPane(), false);
gbl.row().cell(pnlTop).fillXY();
gbl.row().cell(pnlBottom).fillX();
gbl.done();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用GridBagConstraints创建布局? 的相关文章

  • JDK 文档是语言规范的一部分吗?

    只有一名官员Java语言规范 https docs oracle com javase specs jls se8 html index html所有 Java 实现都必须遵守它 API文档怎么样 所有Java实现都需要遵守吗这个版本 ht
  • 使用 GWT 读取非常大的本地 XML 文件

    我正在使用 GWT 构建我的第一个 Java 应用程序 它必须从一个非常大的 XML 文件中读取数据 当我尝试发送对文件中信息的请求时遇到问题 并且我不太确定它是否与文件的大小或我的语义有关 在我的程序中 我有以下内容 static fin
  • 如何在 Antlr4 中为零参数函数编写语法

    我的函数具有参数语法 如下面的词法分析器和解析器 MyFunctionsLexer g4 lexer grammar MyFunctionsLexer FUNCTION FUNCTION NAME A Za z0 9 DOT COMMA L
  • 不同类型的数组

    是否可以有一个包含两种不同类型数据的数组 我想要一个包含双精度型和字符串的数组 我尝试过 ArrayList
  • Spring RestTemplate 使用 cookie 遵循重定向

    最近我遇到了一个问题 我需要做一个GET请求远程服务 我假设使用一个简单的 servlet 并且 RestTemplate 返回Too many redirects 经过一番调查 似乎对指定远程服务发出的第一个请求实际上只是一个 302 重
  • 通往楼梯顶部的可能路径

    这是一个非常经典的问题 我听说谷歌在他们的面试中使用过这个问题 问题 制定一个递归方法 打印从楼梯底部到楼梯顶部的所有可能的独特路径 有 n 个楼梯 您一次只能走 1 步或 2 步 示例输出 如果它是一个有 3 级楼梯的楼梯 1 1 1 2
  • 在 Wildfly 中与 war 部署共享 util jar 文件

    假设我有一个名为 util jar 的 jar 文件 该 jar 文件主要包含 JPA 实体和一些 util 类 无 EJB 如何使这个 jar 可用于 Wildfly 中部署的所有 war 无需将 jar 放置在 war 的 WEB IN
  • org.hibernate.QueryException:无法解析属性:文件名

    我正在使用休眠Criteria从列中获取值filename在我的桌子上contaque recording log 但是当我得到结果时 它抛出异常 org hibernate QueryException 无法解析属性 文件名 com co
  • 如何根据运行的 jar 的结果让我的 ant 任务通过或失败?

    我正在运行 CrossCheck 无浏览器 js 单元测试 作为 ant 脚本的一部分 如果 CrossCheck 测试失败 我希望 ant 报告失败 这是 build xml 中的相关部分
  • 使用 JUnit 时,有没有办法验证测试方法中是否调用了 try/catch 指令的 Catch 部分?

    例如 如果我想测试以下课程 public class SomeClass public void someMethod try Some code where comething could go wrong catch Exception
  • 自动生成Flyway的迁移SQL

    当通过 Java 代码添加新模型 字段等时 JPA Hibernate 的自动模式生成是否可以生成新的 Flyway 迁移 捕获自动生成的 SQL 并将其直接保存到新的 Flyway 迁移中 以供审查 编辑 提交到项目存储库 这将很有用 预
  • 如何检测 Java 字符串中的 unicode 字符?

    假设我有一个包含 的字符串 我如何找到所有这些 un icode 字符 我应该测试他们的代码吗 我该怎么做呢 例如 给定字符串 A X 我想将其转换为 AYXY 我想对其他 unicode 字符做同样的事情 并且我不想将它们存储在某种翻译映
  • 使用 Guice 优化注册表

    你好 今天思考了一种优化 有一些疑问 语境 我正在使用 Guice 2 进行 Java 开发 在我的网络应用程序中 我有一个转换器注册表 可以即时转换为某种类型 转换器描述如下 public class StringToBoolean im
  • 从 GitHub 上托管的 Spring Cloud Config Server 访问存储库的身份验证问题

    我在 GitHub 上的存储库中托管配置 如果我将回购公开 一切都好 但如果我将其设为私有 我将面临 org eclipse jgit errors TransportException https github com my user m
  • GWT 2.3 开发模式 - 托管模式 JSP 编译似乎不使用 java 1.5 兼容性

    无法编译 JSP 类 生成的 servlet 错误 DefaultMessage 上次更新 0 日期 中 0 时间 HH mm ss z 语法 错误 注释仅在源级别为 1 5 时可用 在尝试以开发模式在 Web 浏览器中打开我的 gwt 模
  • Freemarker 和 Struts 2,有时它计算为序列+扩展哈希

    首先我要说的是 使用 Struts2 Freemarker 真是太棒了 然而有些事情让我发疯 因为我不明白为什么会发生这种情况 我在这里问是因为也许其他人有一个想法可以分享 我有一个动作 有一个属性 说 private String myT
  • 使用布尔值进行冒泡排序以确定数组是否已排序

    我有以下用于冒泡排序的代码 但它根本不排序 如果我删除布尔值那么它工作正常 我知道 由于我的 a 0 小于所有其他元素 因此没有执行交换 任何人都可以帮助我解决这个问题 package com sample public class Bub
  • 是否可以使用 Java Guava 将函数应用于集合?

    我想使用 Guava 将函数应用于集合 地图等 基本上 我需要调整 a 的行和列的大小Table分别使所有行和列的大小相同 执行如下操作 Table
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • 如何重新启动死线程? [复制]

    这个问题在这里已经有答案了 有哪些不同的可能性可以带来死线程回到可运行状态 如果您查看线程生命周期图像 就会发现一旦线程终止 您就无法返回到新位置 So 没有办法将死线程恢复到可运行状态 相反 您应该创建一个新的 Thread 实例

随机推荐

  • 如何在 Android 中动态调整补间动画的持续时间/速度

    假设我有一个 Android 应用程序 在该应用程序中我想为 L 形状的球图形制作动画 这需要我定义一个补间动画 在其中创建一个动画 xml 文件 如下所示 并将其应用到其中包含球图形的视图
  • 使用什么方法来保护这个 Android APK:反射?加密?我如何对其进行逆向工程并分析?

    我了解 java 编程的基础知识 但我对逆向工程 APK 很陌生 所以解释会很好 我有一个 APK 文件 但没有 Java 源代码 在线反编译APK后 大部分应用程序隐藏在 资产 gt classes dex dat 我发现的唯一的java
  • JVM 如何处理 RuntimeException(s)

    在创建自定义异常时 如果我们想创建一个checkedException 我们扩展了 Exception 类并为未经检查的异常我们扩展了 RuntimeException 类 我的问题是 当 RuntimeException 和 Except
  • 计算 MySQL 数据库中时间戳在 X 间隔内的行数

    我正在尝试计算数据库表中 X 小时或 X 天内插入的行数 我已经多次尝试 但我不断收到空集响应 我的表中的 start stamp 列的格式如下 2013 08 07 18 18 37 我尝试过很多变体 select from mytabl
  • Bitly 的 Nuget 包以缩短链接

    我需要在 C 中使用 bitly 来缩短链接 有没有这个的 nuget 包 有人可以为我提供代码以便我可以使用它吗 查看https www nuget org packages BitlyAPI 或者您自己调用 bit ly api 该 A
  • ijg 支持 JPEG - 出现访问冲突

    我最近正在尝试更新my game以压缩格式 JPEG 和 PNG 存储图形 虽然我最终选择了另一个图书馆 但我最初的尝试是合并ijg进行JPEG解压缩 然而 我什至无法让最简单的控制台应用程序工作 并且想知道是否有人能够阐明其原因 这是我的
  • 使用 MediaRecorder 在 Android 中录制语音通话

    我在通话录音时遇到问题 我已拨打服务并致电BroadcastReceiver获取通话状态 在TelephonyManager EXTRA STATE OFFHOOK当接到电话时 我正在使用以下代码来记录通话 recorder setAudi
  • 带有子标题的动态表头

    当标题单元格应该有一些不等于标题单元格的子标题单元格时 如何创建 使用角度 动态表标题 我的桌子是 var table header a subheaders a1 a2 header b subheaders b1 b2 b3 我尝试创建
  • 如何防止有人劫持rtmp流源而不限制一个IP

    长期倾听者 第一次来电 我想知道是否有一种方法可以防止有人劫持我们的 rtmp 流 而不将传入源限制为特定的 IP 地址 这就是我们目前正在做的 原因是我们的 ISP 可能会随时更改我们的源 IP 除非我们为静态 IP 支付更多费用 如果没
  • 如何获取列表项 Javascript 的值/文本

    我怎样才能获得a的值 文本 li 物品 我在互联网上找到了很多获取下拉列表值的方法 但不是为了一个 li li item 这是我到目前为止所尝试过的 var listt document getElementById content1 va
  • EPP 呼叫上的客户端证书

    我正在尝试在curl 调用中使用cacert org 提供的免费客户端证书 检查以下 ch curl init curl setopt ch CURLOPT URL https url com curl setopt ch CURLOPT
  • 将不同存储库的一个 Jenkinsfile 调用到另一个 jenkinsfile

    我有一个如下所示的 Jenkinsfile A 在这个文件中 我需要在执行所有阶段后调用另一个 Jenkinsfile B Jenkinsfile A groovy pipeline agent label triggers pollSCM
  • Bootstrap 4:为什么可滚动下拉列表中的弹出框不显示?

    我希望它像 Bootstrap 3 一样工作 当我在悬停弹出窗口上有一个带有滚动条的下拉菜单时 我认为 Bootstrap 4 有问题 我需要溢出 隐藏 使下拉菜单滚动 但弹出窗口也被隐藏 我尝试使用container body 但没有成功
  • SCSS 地图无法在 Compass 中编译[重复]

    这个问题在这里已经有答案了 我写了一个 SCSS 映射变量和一个 each循环为文件下载链接分配不同的图标 如下所示 file icons application vnd ms excel images ico excel png appl
  • 无法读取未定义 vue 的属性“post”

    感谢您阅读我的问题 我已阅读有关我的问题的信息 VUE JS 2 WEBPACK 无法读取未定义 VUE 资源的属性 get 但我的系统没有读取 Vue var 我有一个 vue 组件调用 app vue 我需要使用 vue resourc
  • 如何获取大 LinkedIn 图片共享格式

    我正在使用 linkedin api 在 linkedin 上分享帖子 如下所示 How to get make post like this through api 我正在尝试帖子正文的所有组合 但无法发布如上所述的内容 comment
  • 在 Ionic 4 应用程序中进行的 API 调用无法在 Android 设备上运行

    我可以使用以下命令在笔记本电脑上运行我的离子应用程序ionic lab命令 该应用程序调用 IMDB api 并显示从中检索到的数据 现在 我正在尝试在 Android 设备上运行该应用程序 使用以下命令 ionic cordova run
  • macOS Mojave 版本 10.14.1 bash-3.2 expr:语法错误

    我遇到这样的错误 expr syntax error 我的脚本是 bin bash echo expr index sarasara a 如何修复它 man expr最后给出这个 根据 POSIX 标准 使用字符串参数length subs
  • 我可以使用 allocate 来复制对象的对象吗?

    我有一个从 TPersistent 三级继承的对象 我想使用Assign程序 MyFirstObj GrandSonOfPersistent Create I modify the objects inside MyFirstObj MyS
  • 如何使用GridBagConstraints创建布局?

    我想像这样布局我的 JPane 这样 顶部部分比底部部分更大 更高 顶部部分由另一个 JPanel 组成 并使用 Graphics 对象来显示图像 而底部部分也由另一个 JPanel 组成 但使用 Graphics 对象来绘制一些线条和文字