问题标签 [gridbaglayout]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何在 JFrame 中正确居中 JPanel ( FIXED SIZE )?
大家好!我正在尝试解决一个 - 显然 - 简单的问题,但我无法解决它。我正在开发一个带有 Java/Swing 库的示例应用程序;我有一个 JFrame 和一个 JPanel。我只想实现以下目标:
JPanel必须在 JFrame 内居中。
JPanel必须始终具有使用
setPreferredSize() 方法指定的大小。不得在此大小下调整其大小。
我尝试使用 GridBagLayout:这是我能做到的唯一方法。
请参阅下面的示例:
这是一个屏幕截图:
我不会使用 GridBagLayout 来做太简单的事情。我尝试了一个最简单的解决方案,使用 Box,但这不起作用:
示例代码:
这里是截图,
有任何想法吗?谢谢大家 :-)
java - 带有 GridBagLayout 的嵌套 JPanel
我有一个JFrame
. GridBagLayout
weightx 和 weighty 值被分配不同的非零值并且 GridBagConstraints.fill = GridBagConstraints.BOTH。我在其中一个单元格中嵌套了一个 JPanel,并给了它一个 GridBagLayout。将组件添加到嵌套的 JPanel 时,嵌套的 JPanel 所在的单元格大小会在缺少父布局的所有边上增长。不使用插入和填充。
我该如何解决这个问题?谢谢。这是 GridBagConstraints 值的示例:
这是向嵌套的 JPanel 添加组件之前的屏幕截图:
这是将组件添加到嵌套 JPanel 后的屏幕截图:
java - 为什么 GridBagLayout 将我的组件居中而不是放在角落里?
到目前为止,我设法尽可能避免使用GridBagLayout
(手动代码),但这次我无法避免它,我正在阅读 SUN 的教程GridBagLayout
到目前为止它进展不顺利。我想我误解了一些东西。
例如,我尝试以下代码(类似于 SUN 帖子中的代码):
我在框架的中心得到一个并排的标签和文本字段。
但我期待它们会出现在左上角,因为标签的 gridx 和 gridy 为 0。
即使我设置constraints.anchor = GridBagConstraints.FIRST_LINE_START;
仍然相同的结果。
我在这里错了吗?
来自太阳的帖子:
指定组件左上角的行和列。最左列的地址为 gridx=0,顶行的地址为 gridy=0。
java - 更新 java 布局管理器
我已经全局初始化了一个 GridBagLayout,然后在我的类构造函数中实例化了它并添加了一些按钮等。
事后如何添加内容?简单类扩展了 JFrame。每当我在事后尝试 class.add(stuff, gridbagconstraints) 时(在构造函数中仅使用 add(stuff, gribagconstraints) )什么都没有发生,也没有任何内容添加到我的布局中。
我需要“刷新”布局管理器还是什么?它是全局声明的。
更新:我试过 revalidate() 但它似乎没有工作,这是我的代码的简化版本,带有一个测试按钮,用于概念验证:
更新 2:这似乎是 java 的传递值性质和我试图添加到我的布局中的另一个类(画布)的问题。如果我找到解决方案会更新。
Update3:这是一个线程问题,我正在调用的类正在挂起主窗口。
编辑:我提供了代码作为参考,并尽量完整以提供完整的图片,不要轻易自行编译。感谢所有提供帮助的人。
更新4:成功!他们的关键是 mediaplayer 类做了一个“isDisplayable()”检查,如果它被添加到的框架没有被添加到 gridbaglayout,它会导致它挂起程序。一系列不幸的通过值传递(JInternalFrames),将内部框架预先添加到 gridbaglayout 和从另一种方法远程启动媒体允许我正在寻求工作。
java - 布局设置问题
我做了一个JFrame
,在那个框架里面,有一个面板,我在上面放置了各种容器GridBagLayout
。我已将布局设置JFrame
为BorderLayout
,并在BorderLayout.WEST
. 我想在左上角显示该面板的容器。我怎样才能做到这一点?
即使我尝试添加面板,BorderLayout.NORTH
它也会显示在顶部中心,但我想在左上角。
有没有办法做到这一点?IE 任何其他我应该使用的布局,因为我想显示
java - 使 2 个 JButton 大小相等
我有两个JButton
带有文本“Ok”和“Cancel”的s。我GridBagLayout
用来将它们对齐在一个JDialog
. 我已将锚点设置为GridBagConstraints.CENTER
。由于文本“Ok”和“Cancel”的字符数不同,因此按钮大小不同。如何正确对齐它们,以使它们中的每一个都具有相同的大小。我尝试了以下但无济于事。
java - Java GridBagLayout 自动化构建
我使用 GridBagLayout 和 GridBagConstraints 设计了一个 GUI。它包含可变数量的行,每行都有几种可能的列布局之一。为了测试代码,我使用不同颜色的面板 GUI 来说明每行和每列中所有单元格的位置和调整大小的行为。这个测试 GUI 工作正常,但现在我需要自动构建它。具体来说,我需要这些行是三种不同类型之一。如果您运行下面的代码并查看生成的 GUI,您可以看到第 1 行是一种类型,第 2、6 和 7 行是另一种类型,第 3、4 和 5 行是第三种类型。我需要将这三种类型的行中的每一种都封装在自己的类中。更重要的是,我需要我的代码能够创建可变数量的第三种类型的行(在示例中由第 3、4 和 5 行说明)。
当我尝试将行封装到它们自己的类中时,GUI 不再像它应该的样子。下面的测试代码会生成一个 GUI 布局,看起来应该是这样。谁能告诉我如何更改此代码以使其具有上面第一段中描述的功能?
您只需将下面的测试代码粘贴到您的 IDE 中即可立即运行。测试代码在两个单独的文件中,如下:
GridBagLayoutDemo.java 的代码是:
TestPanel.java 的代码是:
java - GridBagLayout 添加后不要让组件“跳转”
我想将 GridBagLayout 用于具有 <= 3 列和可变行数的布局(如果有人知道另一个可以轻松做到这一点的布局,请告诉我),每次我按下“添加”按钮时,都会出现一个正方形在第一个可用的位置添加。像这样:
x 是正方形,当我按下 add 时,应该在 o 现在所在的位置添加一个新正方形。我设法像这样“让它工作”:
问题是我添加的第二个正方形是这样添加的:
请注意,第一个正方形和第二个正方形之间有一个额外的空间。添加额外的行时,我遇到了同样的问题。
现在如何修复我的代码,以使方块不会“跳跃”并像我给出的第一个示例一样添加?
编辑:根据要求,将其转换为常规 GridLayout 后的更好示例:
我只是将它添加到 JFrame 中:
java - 对齐所有 gridbaglayout 元素
我想用 Swing 在 Java 中制作一个类似于 Option Dialog 的 Firefox。
我现在尝试将我的所有元素对齐在窗口的北边。我用第一个元素制作了它,但是下一个元素垂直填充了房间并且没有对齐。
为此,我正在使用 GridBagLayout。
这是代码:
感谢帮助
java - 面板未添加到主框架
我有一个主框架和 3 个面板。我想将这 3 个面板添加到主框架中。但是,其中只有 2 个被添加。第三个不是。我不知道为什么。有人可以帮忙吗?
上面的代码是一个框架的构造函数。