如何让一个动态的JPanel 粘在最上面?

How to make a dynamic JPanel stick to the top?

我正在使用 GridBagLayout 并且 JPanel 2 似乎总是位于 JPanel 1 的中心。JPanel 2 在整个程序中动态调整了高度,因此我无法使用 [=10 将其固定在顶部=] (gbc = GridBagConstraints) 例如。我试过 gbc.anchor = GridBagConstraints.PAGE_START;gbc.gridheight = 3;,但它们似乎无法满足我的要求。

假设 JPanel 1 和 JFrame 保持相同大小(JFrame 不可调整大小),我怎样才能让 JPanel 2 一直在顶部,没有那个间隙?

JPanel 2 seems to always be in the center of the JPanel

那么您似乎是在将 panel1 添加到 panel2,因为 GridBagLayout 的默认行为是使组件相对于其父组件居中。

根据显示的图片,只需使用框架上的 BorderLayout(默认设置)。那么你会:

  1. 将 panel2 添加到 BorderLayout.LINE_START
  2. 将 panel1 添加到 BorderLayout.CENTER

阅读 How to Use BorderLayout 上的 Swing 教程部分了解更多信息。