已关闭,此问题需要更focused。目前不接受答复。
**想改善这个问题吗?**更新问题,使其仅通过editing this post关注一个问题。
14小时前关闭
Improve this question
我在netbeans中创建了一个GUI,其中大部分使用绝对布局。我想我的组件自动调整大小,我知道你必须使用gridbag布局这样做。我是否必须从头开始使用gridbag,或者是否可以更改现有代码并将所有组件保留在同一位置。
我试着把我的组件都改成gridbag布局,但它只打开了一个很小的窗口。当我把它展开时,它只是一个空白的灰色屏幕。
1条答案
按热度按时间jfewjypa1#
避免绝对定位
你说:
我在netbeans中创建了一个GUI,其中大部分使用绝对布局。
很少是一个好主意,因为你遇到的原因:这样的布局是不灵活的,迫使程序员进行像素数学运算,并剥夺了用户重新调整大小的能力。
Swing中的布局管理器是为了更容易地为用户给予调整大小的灵活性,并自动适应跨平台呈现大小的变化而发明的。
添加布局管理器时保留几乎所有代码
你说:
我必须重新开始…从一开始
不你不能从头开始您已经知道需要哪些小部件,以及它们的一般安排。您已经为这些小部件编写了行为。您已经在后台编写了业务逻辑来支持这些小部件的行为。你保存的所有代码。
你需要做的就是:
GridBagLayout
只是几个布局管理器之一你说:
我想我的组件自动调整大小,我知道你必须使用gridbag布局这样做。
不一定是
GridBagLayout
。Swing提供了各种捆绑的布局管理器。所有这些都提供了自动调整大小。此外,您可以选择添加任何第三方布局管理器。
选择一个或多个,以满足您的需求。
Oracle免费提供范围广泛的tutorial on Swing。我建议你研究一下。注意visual example of several layout managers。这些措施包括:
最有用的是BorderLayout。这个布局管理器可以容纳普通业务应用程序中常见的元素。顶部的
NORTH
可以容纳菜单、字幕、帮助按钮等。左边的WEST
可能包含导航栏。右侧的EAST
可能有一个状态面板或描述性帮助内容。底部的SOUTH
可以有breadcrumbs、* 接受 * 和 * 取消 * 按钮等。您的业务形式进入中心。任何未使用的空边折叠,不浪费任何空间。你需要练习。每个布局管理器都有自己的逻辑和自己的怪癖。你需要了解和爱每一个人的优点。要有耐心;花在前期学习布局管理器上的时间,要比花在后期重新安排表单以适应变化上的时间多得多。
特别是,我建议您从
FlowLayout
开始。请记住将一个布局管理器嵌套在另一个布局管理器中的概念。在熟悉了各种布局管理器之后,在纸上画出所需的表单。在该草图中,查找可以聚集到子布局中的小部件组。然后查看那些被安排在外部布局(如
BorderLayout
)中的子布局。使用
GridBagLayout
指定约束来固定窗口大小你说:
我的组件都是gridbag布局,但它只打开一个非常小的窗口。当我把它展开时,它只是一个空白的灰色屏幕。
关于窗口大小,对于
GridBagLayout
,您需要设置constraints。下面是一些示例代码,我的缩写example code provided by Oracle用于演示GridBagLayout
。运行时:
GridBagLayout
是与Java捆绑在一起的最强大、最灵活的布局管理器。但是GridBagLayout
也是最复杂的,也是最难学习的。如上所述,我强烈建议在第一次学习Swing时使用其他布局管理器。JavaFX
顺便说一下,如果刚开始使用Swing,请注意Swing现在是在maintenance-mode中。Swing与每个版本的Java捆绑在一起,并将在未来许多年内得到完全支持。但是要知道,Oracle已经宣布JavaFX是Swing的官方继承者。
您可能希望将学习时间投入JavaFX而不是Swing。但是如果你急着使用一个相对简单的应用程序,那么只需要添加一个Swing布局管理器就可以了。
参见: