Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java Swing中的锚定和停靠控件_Java_Swing - Fatal编程技术网

java Swing中的锚定和停靠控件

java Swing中的锚定和停靠控件,java,swing,Java,Swing,net中有一个名为锚定的控件,用于使用窗体动态调整控件的大小。将控件锚定到窗体并调整窗体大小时,控件将保持控件与锚定位置之间的距离 我的问题是,java中是否有控件具有与.net中锚定相同的功能。 例如,我选择了一个文本字段,将其放在面板上,并正确调整了大小。 现在,当我更改窗口(JFrame)的大小或最大化窗口时,textfield将不会保持与以前相同的距离。 我一直在使用netbeans,但我在pallete manager中没有找到任何可以回答我问题的属性。 请用一个例子或一些链接来解释我

net中有一个名为锚定的控件,用于使用窗体动态调整控件的大小。将控件锚定到窗体并调整窗体大小时,控件将保持控件与锚定位置之间的距离

我的问题是,java中是否有控件具有与.net中锚定相同的功能。
例如,我选择了一个文本字段,将其放在面板上,并正确调整了大小。 现在,当我更改窗口(JFrame)的大小或最大化窗口时,textfield将不会保持与以前相同的距离。 我一直在使用netbeans,但我在pallete manager中没有找到任何可以回答我问题的属性。
请用一个例子或一些链接来解释我。

Netbeans内置了对使用Matisse GUI builder设计GUI的支持。这是最接近于拖放式表单设计的一种,这种表单设计在VB等环境中可用


(就我个人而言,我并不十分喜欢这种方法,因为它会自动生成大量代码,这些代码很快就会变得不可维护,尤其是在开发团队中并非所有人都在使用Netbeans的情况下。)

如果只有一个控件,那么最好使用
java.awt.BorderLayout
并使用
BorderLayout.CENTER
添加控件

如果您有多个控件,则需要使用
java.awt.GridBagLayout

您需要设置以下各项:

gridBagConstraints.anchor = GridBagConstraints.NORTHWEST;
gridBagConstraints.fill = GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1;
gridBagConstraints.weighty = 1;
添加要重新调整大小的控件时

这里有一个关于它的教程:


Java Swing使用布局管理器来管理可视组件的大小和位置。 这是关于如何使用布局管理器的官方java教程:

并简要介绍了最常见的布局管理器

FlowLayout(默认):它从左到右和从上到下排列组件

边界布局:将集装箱分为北、南、西、东中心。只有一个组件的位置。边界上的构件展开,中心构件使用可用空间

GridLayout:初始化管理器,指示网格将有多少行和列。每个单元格都有相同的大小,您可以开始在左上角的单元格中添加组件

GridBagLayout:最细粒度的布局管理器,您可以用它做任何事情,但是有点复杂,请参阅java文档

NullLayout(当取消容器的布局管理器时):没有布局管理器,组件使用位置和大小属性在组件上显示

当然,其他容器中的容器可以使用与其父容器不同的布局管理器。组合布局管理器是一门很难学的艺术