Java容器约束问题

时间:2010-04-26 17:25:29

标签: java user-interface components

我使用以下内容:

java.awt.Container.add(Component comp, Object constraints)

如何具体说明约束对象?我需要能够在容器中放置一个组件。

哦,如果这有帮助,我的班级会延长JInternalFrame ......

我需要指定坐标以将组件放在容器中

5 个答案:

答案 0 :(得分:4)

看看tutorials for LayoutManagers!这些示例将向您展示哪些布局使用哪些约束,以及如何使用。

答案 1 :(得分:3)

constraints个对象取决于您使用的布局管理器。

例如,对于BorderLayout,您将只有一些常量:container.add(element, BorderLayout.CENTER)

如果容器的布局管理器是GridBagLayout,那么您将拥有一个具有指定参数的GridBagConstraints对象。

某些布局管理器(如FlowLayoutGridLayout)不需要任何约束,因为它们实际上决定了如何自己放置内容。

作为旁注,如果您需要绝对定位,则不会有任何布局管理器:

container.setLayout(null);
container.add(element1);

Insets insets = pane.getInsets();
element1.setBounds(..); //here you set absolute position

答案 2 :(得分:1)

来自java.awt.Container class'es javadoc:

  

约束由正在使用的特定布局管理器定义。例如,BorderLayout类定义了五个约束:BorderLayout.NORTH,BorderLayout.SOUTH,BorderLayout.EAST,BorderLayout.WEST和BorderLayout.CENTER。

     

GridBagLayout类需要GridBagConstraints对象。未能传递正确类型的约束对象会导致IllegalArgumentException。

此评论可在受保护的addImpl方法中找到。

答案 3 :(得分:0)

这取决于您使用的布局管理器。例如,如果您使用BorderLayout,则可以使用BorderLayout.CENTERBorderLayout.NORTH等值。如果您没有使用布局管理器,则需要手动设置组件的位置。

答案 4 :(得分:0)

正确的约束对象取决于当前的LayoutManager

例如,如果您使用BorderLayout,则约束对象可以是BorderLayout.SOUTH