【发布时间】:2011-02-12 12:22:00
【问题描述】:
我正在使用以下内容:
java.awt.Container.add(Component comp, Object constraints)
如何指定约束对象?我需要能够在容器中放置一个组件。
哦,如果这有帮助,我的课程将扩展 JInternalFrame...
我需要指定坐标以将组件放置在容器中
【问题讨论】:
标签: java user-interface components
我正在使用以下内容:
java.awt.Container.add(Component comp, Object constraints)
如何指定约束对象?我需要能够在容器中放置一个组件。
哦,如果这有帮助,我的课程将扩展 JInternalFrame...
我需要指定坐标以将组件放置在容器中
【问题讨论】:
标签: java user-interface components
constraints 对象取决于您使用的布局管理器。
例如,BorderLayout 将只有一些常量:container.add(element, BorderLayout.CENTER)
如果容器的布局管理器是 GridBagLayout,您将拥有一个带有指定参数的 GridBagConstraints 对象。
一些布局管理器(如FlowLayout 或GridLayout)不需要任何类型的约束,因为它们实际上自己决定如何放置东西。
附带说明,如果您需要绝对定位,您将没有任何布局管理器:
container.setLayout(null);
container.add(element1);
Insets insets = pane.getInsets();
element1.setBounds(..); //here you set absolute position
【讨论】:
来自java.awt.Containerclass'es javadoc:
约束由正在使用的特定布局管理器定义。例如,BorderLayout 类定义了五个约束:BorderLayout.NORTH、BorderLayout.SOUTH、BorderLayout.EAST、BorderLayout.WEST 和 BorderLayout.CENTER。
GridBagLayout 类需要一个 GridBagConstraints 对象。未能传递正确类型的约束对象会导致 IllegalArgumentException。
此评论可以在受保护的addImpl 方法中找到。
【讨论】:
看看tutorials for LayoutManagers!这些示例将向您展示哪些约束与哪些布局一起使用,以及如何使用。
【讨论】:
正确的约束对象取决于当前的LayoutManager。
例如,如果您使用BorderLayout,则约束对象可以是BorderLayout.SOUTH。
【讨论】:
这取决于您使用的布局管理器。例如,如果您使用BorderLayout,则可以使用BorderLayout.CENTER 和BorderLayout.NORTH 之类的值。如果您没有使用布局管理器,则需要手动设置组件的位置。
【讨论】:
null 传递给约束对象,并在组件上使用setBounds 或setLocation 来定位它。
null。