Java Swing中的锚定和停靠控件

时间:2009-09-30 08:50:45

标签: java swing

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

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

3 个答案:

答案 0 :(得分:4)

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

http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html

还有最常见的布局管理器的简要说明

FlowLayout(默认值):它从左到右配置组件。

BorderLayout:它将容器分为NORTH,SOUTH,WEST,EAST center CENTER。只有一个组件的位置。边框上的组件展开,中心组件使用可用空间

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

GridBagLayout:MOST细粒度布局管理器,您可以对此做任何事情,但有点复杂,请参阅java文档。

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

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

答案 1 :(得分:1)

Netbeans已经内置了使用Matisse GUI构建器设计GUI的支持。这是你最接近拖拽和放大器的距离。 drop样式表单设计,可用于VB等环境。

有一个Flash演示here

(就个人而言,我不是这种方法的忠实粉丝,因为它会自动生成很多很快变得无法维护的代码,特别是如果不是开发团队中的每个人都在使用Netbeans。)

答案 2 :(得分:0)

如果您只有一个控件,那么使用java.awt.BorderLayout并将控件添加到BorderLayout.CENTER是最好的选择。

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

您需要设置以下内容:

gridBagConstraints.anchor = GridBagConstraints.NORTHWEST;
gridBagConstraints.fill = GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1;
gridBagConstraints.weighty = 1;

添加要重新调整大小的控件时。

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

http://java.sun.com/docs/books/tutorial/uiswing/layout/gridbag.html