我是 Java Swing 的新手,想做我的布局,但是做不到
现在看:
看我想要:
现在编码:
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 商店,在每个选项卡 Pane 窗口中有 13 个这样的标签。我怎样才能让它看起来像第二张图片中我想要的那样?
最佳答案
Im new in Java Swing, and want to make my layout, but can't do this
可能没有一种布局可以满足所有人的需求。但是结合几种布局通常可以处理大多数情况。
根据您在问题中显示的图片。无需编写自己的布局。您始终可以使用子面板来容纳您的组件,并为每个子面板设置特定的布局来处理您对这些单独区域的需求。
- 在您的第一张附加图片中对齐的原因是:
JPanel 使用 FlowLayout 作为其默认布局。因此,所有添加的组件将以线性方式出现,并尝试尽可能多地填充面板宽度可以容纳的行。一旦超过面板的宽度,组件将被推到下一行。
- 如果您想在第二张附加图片中实现对齐:
您可以创建一个包含多个子面板的主面板(见下图)。 红色框是您的主面板,您可以继续使用默认的 FlowLayout。
然后将您的组件添加到子面板(橙色框)中,然后再将其添加到主面板中。然后,您可以使用 BoxLayout、FlowLayout 甚至 GridBagLayout 用于子面板(橙色框)。
关于Java J面板布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35754993/