0

我正在构建一个 GUI 应用程序,在一个 JFrame 中我有 2 个 jcombobox 和一个 JPanel 来查看某些数据。现在,当我在主类中调用 pack() 方法时,它会将两个 jcombobox'es 放在我的 JPanel 旁边,这是我不想要的,因为我想要它们北。当然,我尝试在我的代码中对其进行硬编码,但在我调用 pack() 方法后它不起作用。这种方法有其他选择吗?

4

4 回答 4

2

只有一个组件可以是 NORTH,因此如果您希望两个 ComboBoxes 都是 NORTH,则必须将它们添加到单独的容器中。然后可以将这个单独的容器放在北方。

(发布来源以获得更准确的帮助。)

于 2010-07-16T11:53:09.683 回答
0

pack所做的只是将(在Window这种情况下JFrame)调整为其首选大小及其子组件的首选大小。要控制子组件相对于彼此的实际位置,您需要使用适当的LayoutManager.

您可能想查看使用布局管理器教程。

于 2010-07-16T11:52:25.960 回答
0

pack()方法只是导致布局发生,它与放在哪里完全无关。

很可能您没有正确使用布局管理器。向我们展示您的代码,我们可以准确地告诉您您做错了什么。

于 2010-07-16T11:53:10.837 回答
0

您可以通过使用 setSize 和 setBounds 显式设置帧大小来避免使用 pack。但是,使用 pack 通常是首选方式,因为它让框架布局管理器负责框架大小。

话虽如此,您所描述的问题似乎与正确使用布局管理器有关,而不是与框架的大小有关。查看 Swing 的各种布局管理器以及如何使用它们:http: //download.oracle.com/docs/cd/E17409_01/javase/tutorial/uiswing/layout/using.html

于 2010-07-16T11:56:10.070 回答