Java JPanel布局

Java JPanel布局,java,swing,Java,Swing,我是JavaSwing新手,想做我的布局,但做不到 现在看看: 看,我想要: 立即编码: JPanel MainPanel = new JPanel(new GridBagLayout()); JLabel MoneyLabel = new JLabel(MoneyIcon); MoneyLabel.setHorizontalTextPosition(JLabel.CENTER); MoneyLabel.setVerticalTextPosition(J

我是JavaSwing新手,想做我的布局,但做不到

现在看看:

看,我想要:

立即编码:

JPanel MainPanel = new JPanel(new GridBagLayout());

    JLabel MoneyLabel = new JLabel(MoneyIcon);      
    MoneyLabel.setHorizontalTextPosition(JLabel.CENTER);
    MoneyLabel.setVerticalTextPosition(JLabel.BOTTOM);
    MoneyLabel.setText("Money:" + CarMain.Money);

    JLabel MoneyClicksLabel = new JLabel();
    MoneyClicksLabel.setHorizontalTextPosition(JLabel.CENTER);
    MoneyClicksLabel.setVerticalTextPosition(JLabel.BOTTOM);
    MoneyClicksLabel.setText("Money Clicks: " + CarMain.MoneyClicks);

    JLabel BoxesLabel = new JLabel(BoxLv9_10Icon);      
    BoxesLabel.setHorizontalTextPosition(JLabel.CENTER);
    BoxesLabel.setVerticalTextPosition(JLabel.BOTTOM);
    BoxesLabel.setText("Boxes: " + CarMain.Boxes);

    JLabel BoxesClicksLabel = new JLabel();
    BoxesClicksLabel.setHorizontalTextPosition(JLabel.CENTER);
    BoxesClicksLabel.setVerticalTextPosition(JLabel.BOTTOM);
    BoxesClicksLabel.setText("Boxes Clicks: " + CarMain.BoxesClicks);

    MainPanel.add(MoneyLabel);
    MainPanel.add(MoneyClicksLabel);
    MainPanel.add(jbtnMoney);
    MainPanel.add(BoxesLabel);
    MainPanel.add(BoxesClicksLabel);
    MainPanel.add(jbtnBoxes);

这是我想要的一个简单的例子,因为我正在建立ingame商店,在每个选项卡窗格窗口中有13个这样的标签。我怎样才能让它看起来像第二张照片中的我想要什么?

Artis Uljanovs,晚上下班后我会看一下,以帮助你

我建议您已经阅读以下内容:


你需要一些关于Java布局的基础知识。

Artis Uljanovs,晚上下班后我会看一看这篇文章来帮助你

我建议您已经阅读以下内容:

您需要一些Java布局的基础知识

我是JavaSwing新手,想做我的布局,但做不到

可能没有一个单一的布局可以满足每个人的需求。但是组合几个布局通常可以处理大多数情况

根据你在问题中展示的图像。没有必要编写自己的布局。您可以始终使用子面板来保存组件,并为每个子面板设置特定布局,以处理这些单独区域所需的内容

  • 第一个附加图像中对齐的原因是:
JPanel使用FlowLayout作为默认布局。因此,添加的所有组件都将以线性方式显示,并尽可能地填充该行,使面板的宽度保持不变。一旦超过面板的宽度,组件将被推到下一行


  • 如果要在第二个附加图像中实现对齐:
您可以创建一个主面板来包含多个子面板(请参见下图)。 红色框是主面板,您可以继续使用默认的FlowLayout

然后将组件添加到子面板(橙色框)中,然后再将其添加到主面板中。然后,您可以对子面板(橙色框)使用BoxLayoutFlowLayout甚至GridBagLayout

我是JavaSwing新手,想做我的布局,但做不到

可能没有一个单一的布局可以满足每个人的需求。但是组合几个布局通常可以处理大多数情况

根据你在问题中展示的图像。没有必要编写自己的布局。您可以始终使用子面板来保存组件,并为每个子面板设置特定布局,以处理这些单独区域所需的内容

  • 第一个附加图像中对齐的原因是:
JPanel使用FlowLayout作为默认布局。因此,添加的所有组件都将以线性方式显示,并尽可能地填充该行,使面板的宽度保持不变。一旦超过面板的宽度,组件将被推到下一行


  • 如果要在第二个附加图像中实现对齐:
您可以创建一个主面板来包含多个子面板(请参见下图)。 红色框是主面板,您可以继续使用默认的FlowLayout

然后将组件添加到子面板(橙色框)中,然后再将其添加到主面板中。然后,您可以对子面板(橙色框)使用BoxLayoutFlowLayout甚至GridBagLayout


看看下面我的解决方案。变量名不应以大写字符开头。在论坛中发布代码时,学习并遵循这些规则。否则,论坛语法突出显示无法正常工作。请查看下面的解决方案。变量名称不应以大写字符开头。在论坛中发布代码时,学习并遵循这些规则。否则,论坛语法突出显示无法正常工作。