我使用以下内容:
java.awt.Container.add(Component comp, Object constraints)
如何具体说明约束对象?我需要能够在容器中放置一个组件。
哦,如果这有帮助,我的班级会延长JInternalFrame
......
我需要指定坐标以将组件放在容器中
答案 0 :(得分:4)
看看tutorials for LayoutManagers!这些示例将向您展示哪些布局使用哪些约束,以及如何使用。
答案 1 :(得分:3)
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
答案 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.CENTER
和BorderLayout.NORTH
等值。如果您没有使用布局管理器,则需要手动设置组件的位置。
答案 4 :(得分:0)
正确的约束对象取决于当前的LayoutManager
。
例如,如果您使用BorderLayout
,则约束对象可以是BorderLayout.SOUTH
。