Java JFrame布局对齐

Java JFrame布局对齐,java,swing,Java,Swing,我在JFrame布局方面有点麻烦。我想要的是这种对齐方式: 但我从这段代码中得到的是: this.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT); this.setLayout(new FlowLayout(FlowLayout.CENTER)); 这个片段是这样的: this.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);

我在JFrame布局方面有点麻烦。我想要的是这种对齐方式: 但我从这段代码中得到的是:

    this.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
    this.setLayout(new FlowLayout(FlowLayout.CENTER));

这个片段是这样的:

    this.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
    this.setLayout(new FlowLayout(FlowLayout.LEFT));

我如何才能得到理想的结果(每行居中,但图标从左侧开始)


编辑:很难看出第一个和最后一个之间的区别,但只需在新选项卡中打开图像,并在它们之间按CTRL-tab键,即可了解我的意思。在第一幅图中,整个东西都在屏幕中央,而在第三幅图中,图标是左对齐的。第二个例子中所有图标都居中。

好的,所以我最后只是用与第三个例子相同的从左到右格式将图像添加到一个JPanel中,并将该JPanel居中。简单的修复。

抱歉,我看不出第一个屏幕截图(期望的结果)和最后一个屏幕截图之间的区别:)哦,现在我明白了。您是否尝试过配置一些边距/填充等?我刚想说,您可能应该选择一种非白色的背景色。在一个新的选项卡中打开图像并在它们之间切换-你会看到,在第一个选项卡中,左侧和右侧之间的边距相等,而在第三个选项卡中,它是左对齐的。好的,我将背景颜色更改为黑色-现在更明显了吗?第一个是居中的,而第三个是左对齐的。没关系,我算出了。你算出了Swing布局管理器争吵的最重要技巧:如果布局管理器需要做两件事(这里形成块行并居中),大量添加嵌套的JPanel,让您可以使用额外的布局管理器,并使每个布局管理器都变得微不足道。我不确定这是否应该有趣,但+1可以让我发笑。这不应该有趣。人们坚持采用低级UI小部件的浅层次结构,而不是构建适当的抽象,并尝试使用极其复杂的布局管理器(如GridBagLayout)来管理过多的面板,而不是考虑适当的结构。实际上作为构建块的Swing类的API是如此庞大和复杂,以至于很少有人敢编写自己的JComponent子类,即使它实际上相当简单。