Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使BoxLayout中的项目自上而下对齐?_Java_Jpanel_Alignment_Border Layout_Boxlayout - Fatal编程技术网

Java 如何使BoxLayout中的项目自上而下对齐?

Java 如何使BoxLayout中的项目自上而下对齐?,java,jpanel,alignment,border-layout,boxlayout,Java,Jpanel,Alignment,Border Layout,Boxlayout,我正在创建一个应用程序,它在BorderLayout的中心位置有一个BoxLayout。我在对齐BoxLayout中的组件时遇到问题,因为当添加一个组件时,它们不是从上到下很好地对齐,而是重新对齐,以便彼此之间具有相等的间距。这是我的代码(删除了不相关的代码): (在上面的代码中,“this”是BorderLayout。) 将项目添加到BoxLayout(packageItemPanel)后,我在主框架上调用了packageItemPanel.repaint()和refreshFrame() 下

我正在创建一个应用程序,它在BorderLayout的中心位置有一个BoxLayout。我在对齐BoxLayout中的组件时遇到问题,因为当添加一个组件时,它们不是从上到下很好地对齐,而是重新对齐,以便彼此之间具有相等的间距。这是我的代码(删除了不相关的代码):

(在上面的代码中,“this”是BorderLayout。)

将项目添加到BoxLayout(packageItemPanel)后,我在主框架上调用了packageItemPanel.repaint()和refreshFrame()

下面是它当前的屏幕截图

我希望项目从上到下对齐,但它们之间的间距不相等


谢谢你的帮助

尝试添加到容器的末尾,然后确保。我添加了
packageItemPanel.add(Box.createVerticalGlue())
并将其。。什么样的作品。。?这些项目仍然会自动对齐,但它们不会从上到下穿过面板的前三分之二。我使用
panel.add(component,panel.getComponents().length-2)添加了项目希望有人能帮忙!请记住,嵌套布局是常见的,也是推荐的。您可以尝试将面板放在另一个JPanel中,一个使用GridBagLayout的JPanel。将您的BoxLayout面板添加到GridBagConstraints中,其中GridBagConstraints指定了
weighty
为1和
anchor
为GridBagConstraints.NORTH。如果您希望项目水平拉伸,可以将
fill
设置为gridbagsconstraints.HORIZONTAL。这很有效!如何使项目也与左边框对齐?如中所述,您需要。
private void buildFrame() {
    this.setLayout(new BorderLayout());

    packageItemPanel.setLayout(new BoxLayout(packageItemPanel, BoxLayout.Y_AXIS));

    this.add(packageItemPanel, BorderLayout.CENTER);
}