【发布时间】:2016-08-10 00:07:51
【问题描述】:
我的问题是如何指定布局中部件的大小?
我需要以某种方式设置“部分”的大小,而不是使用preferedSize,也许在布局管理器中,不管在哪里 - 我只需要稳定的大小。
我想为游戏创建布局。我已经创建了一个,但我正在处理组件大小的问题。所以我认为最好对我的布局做出更好的概念。
让我们看看我的草稿。
主要部分由这个树部分组成:
上层-会有菜单。
中心 - 这包括 3 个部分 A、B、C
页脚 - 会有状态栏
我的想法是能够设置每个组件的大小。
所有布局都取决于 C 部分,它的大小可能为 450x450 像素或 600x600 像素。
对于 A 部分和 B 部分,我只需要指定宽度,因为只有一些文本信息 - 它应该是大约 300 像素。
我尝试将 GridBagLayout 用于中心部分,但用于 C 的 setSize 效果不佳。
我在 Containers (java.awt.Container) 中制作零件 - 我在其中添加每个零件的内容,然后将 Container 添加到上层。
【问题讨论】:
-
你不应该设置组件的大小。组件应该知道它们的首选大小并在调用 getPreferredSize() 时返回它。大多数布局使用组件的首选大小来相应地布置它们。
-
好的,我发现这是布局管理器的工作……我不想设置组件的首选大小。可以在Layout manager(managers)中严格设置组件的大小吗?
-
您不能手动设置控件的大小,除非您完全不使用布局管理器,而是手动全部进行。恐怕没有中间道路。
-
我会在 GUI 上设置
C、pack()的首选大小并在框架上调用setResizable(false)。 -
嗨......我自己目前正在努力解决这个问题。我在我的 gui 中处于早期阶段,并且我已经对应该“扩展”以填充(剩余)可用区域的主面板提出了挑战。这很烦人。我还从本质上认为“布局”必须填充可用的已发布空间——正如该术语的印刷起源来自出版一样,布局是“页面(作为一个整体)如何布局”!
标签: java swing layout layout-manager