问题标签 [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.

0 投票
6 回答
63987 浏览

java - 如何在 JFrame 中正确居中 JPanel ( FIXED SIZE )?

大家好!我正在尝试解决一个 - 显然 - 简单的问题,但我无法解决它。我正在开发一个带有 Java/Swing 库的示例应用程序;我有一个 JFrame 和一个 JPanel。我只想实现以下目标:

  1. JPanel必须在 JFrame 内居中。

  2. JPanel必须始终具有使用
    setPreferredSize() 方法指定的大小。不得在此大小下调整其大小。

我尝试使用 GridBagLayout:这是我能做到的唯一方法。

请参阅下面的示例:

是一个屏幕截图:

我不会使用 GridBagLayout 来做太简单的事情。我尝试了一个最简单的解决方案,使用 Box,但这不起作用:

示例代码:

这里是截图,

有任何想法吗?谢谢大家 :-)

0 投票
2 回答
2438 浏览

java - 带有 GridBagLayout 的嵌套 JPanel

我有一个JFrame. GridBagLayoutweightx 和 weighty 值被分配不同的非零值并且 GridBagConstraints.fill = GridBagConstraints.BOTH。我在其中一个单元格中嵌套了一个 JPanel,并给了它一个 GridBagLayout。将组件添加到嵌套的 JPanel 时,嵌套的 JPanel 所在的单元格大小会在缺少父布局的所有边上增长。不使用插入和填充。
我该如何解决这个问题?谢谢。这是 GridBagConstraints 值的示例:

这是向嵌套的 JPanel 添加组件之前的屏幕截图:
在此处输入图像描述

这是将组件添加到嵌套 JPanel 后的屏幕截图:
在此处输入图像描述

0 投票
5 回答
26148 浏览

java - 为什么 GridBagLayout 将我的组件居中而不是放在角落里?

到目前为止,我设法尽可能避免使用GridBagLayout(手动代码),但这次我无法避免它,我正在阅读 SUN 的教程GridBagLayout 到目前为止它进展不顺利。我想我误解了一些东西。
例如,我尝试以下代码(类似于 SUN 帖子中的代码):

我在框架的中心得到一个并排的标签和文本字段。
但我期待它们会出现在左上角,因为标签的 gridx 和 gridy 为 0。
即使我设置constraints.anchor = GridBagConstraints.FIRST_LINE_START;仍然相同的结果。
我在这里错了吗?
来自太阳的帖子:

指定组件左上角的行和列。最左列的地址为 gridx=0,顶行的地址为 gridy=0。

0 投票
2 回答
5227 浏览

java - 更新 java 布局管理器

我已经全局初始化了一个 GridBagLayout,然后在我的类构造函数中实例化了它并添加了一些按钮等。

事后如何添加内容?简单类扩展了 JFrame。每当我在事后尝试 class.add(stuff, gridbagconstraints) 时(在构造函数中仅使用 add(stuff, gribagconstraints) )什么都没有发生,也没有任何内容添加到我的布局中。

我需要“刷新”布局管理器还是什么?它是全局声明的。

更新:我试过 revalidate() 但它似乎没有工作,这是我的代码的简化版本,带有一个测试按钮,用于概念验证:

更新 2:这似乎是 java 的传递值性质和我试图添加到我的布局中的另一个类(画布)的问题。如果我找到解决方案会更新。

Update3:这是一个线程问题,我正在调用的类正在挂起主窗口。

编辑:我提供了代码作为参考,并尽量完整以提供完整的图片,不要轻易自行编译。感谢所有提供帮助的人。

更新4:成功!他们的关键是 mediaplayer 类做了一个“isDisplayable()”检查,如果它被添加到的框架没有被添加到 gridbaglayout,它会导致它挂起程序。一系列不幸的通过值传递(JInternalFrames),将内部框架预先添加到 gridbaglayout 和从另一种方法远程启动媒体允许我正在寻求工作。

0 投票
3 回答
1031 浏览

java - 布局设置问题

我做了一个JFrame,在那个框架里面,有一个面板,我在上面放置了各种容器GridBagLayout。我已将布局设置JFrameBorderLayout,并在BorderLayout.WEST. 我想在左上角显示该面板的容器。我怎样才能做到这一点?

即使我尝试添加面板,BorderLayout.NORTH它也会显示在顶部中心,但我想在左上角

有没有办法做到这一点?IE 任何其他我应该使用的布局,因为我想显示

0 投票
3 回答
3455 浏览

java - 使 2 个 JButton 大小相等

我有两个JButton带有文本“Ok”和“Cancel”的s。我GridBagLayout用来将它们对齐在一个JDialog. 我已将锚点设置为GridBagConstraints.CENTER。由于文本“Ok”和“Cancel”的字符数不同,因此按钮大小不同。如何正确对齐它们,以使它们中的每一个都具有相同的大小。我尝试了以下但无济于事。

0 投票
1 回答
1963 浏览

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 的代码是:

0 投票
2 回答
580 浏览

java - GridBagLayout 添加后不要让组件“跳转”

我想将 GridBagLayout 用于具有 <= 3 列和可变行数的布局(如果有人知道另一个可以轻松做到这一点的布局,请告诉我),每次我按下“添加”按钮时,都会出现一个正方形在第一个可用的位置添加。像这样:

x 是正方形,当我按下 add 时,应该在 o 现在所在的位置添加一个新正方形。我设法像这样“让它工作”:

问题是我添加的第二个正方形是这样添加的:

请注意,第一个正方形和第二个正方形之间有一个额外的空间。添加额外的行时,我遇到了同样的问题。

现在如何修复我的代码,以使方块不会“跳跃”并像我给出的第一个示例一样添加?

编辑:根据要求,将其转换为常规 GridLayout 后的更好示例:

我只是将它添加到 JFrame 中:

0 投票
2 回答
2134 浏览

java - 对齐所有 gridbaglayout 元素

我想用 Swing 在 Java 中制作一个类似于 Option Dialog 的 Firefox。

我现在尝试将我的所有元素对齐在窗口的北边。我用第一个元素制作了它,但是下一个元素垂直填充了房间并且没有对齐。
为此,我正在使用 GridBagLayout。

这是代码:

感谢帮助

0 投票
2 回答
87 浏览

java - 面板未添加到主框架

我有一个主框架和 3 个面板。我想将这 3 个面板添加到主框架中。但是,其中只有 2 个被添加。第三个不是。我不知道为什么。有人可以帮忙吗?

上面的代码是一个框架的构造函数。