【问题标题】:JLabel and JButton Center in BoxLayoutBoxLayout 中的 JLabel 和 JButton 中心
【发布时间】:2016-07-02 10:13:08
【问题描述】:

我是 Java 编程新手,无法处理我的 Swing 问题。我无法让 JButtons 和 JLabels 在 JPanels(BoxLayout) 中居中。

这里有一些照片:

代码:

        PlayerLabel.setHorizontalTextPosition(JLabel.CENTER);
        PlayerLabel.setVerticalTextPosition(JLabel.BOTTOM);
        PlayerLabel.setText("Player Level: " + CarMain.main[5]);

    AccessoriesLVL1Label.setHorizontalTextPosition(JLabel.CENTER);
    AccessoriesLVL1Label.setVerticalTextPosition(JLabel.BOTTOM);
    AccessoriesLVL1Label.setText("<html>Accessories LVL 1<br>" + "Count: " + Part.parts[1]);

JButton jbtnSellAccessoriesLv1 = new JButton("Sell");
jbtnSellAccessoriesLv1.addActionListener(this);

这就是我制作 Jlabel 的地方:

//升级面板

GridLayout UpgradesLayout = new GridLayout(3,3);
        JPanel UpgradesPanel = new JPanel();
        UpgradesPanel.setLayout(UpgradesLayout);

        JPanel UpgradesPanelSub = new JPanel();
        UpgradesPanelSub.setLayout(new BoxLayout(UpgradesPanelSub, BoxLayout.PAGE_AXIS));
        UpgradesPanelSub.setBorder(BorderFactory.createCompoundBorder(raisedbevel, loweredbevel));

        JPanel UpgradesPanelSub2 = new JPanel();
        UpgradesPanelSub2.setLayout(new BoxLayout(UpgradesPanelSub2, BoxLayout.PAGE_AXIS));
        UpgradesPanelSub2.setBorder(BorderFactory.createCompoundBorder(raisedbevel, loweredbevel));

        JPanel UpgradesPanelSub3 = new JPanel();
        UpgradesPanelSub3.setLayout(new BoxLayout(UpgradesPanelSub3, BoxLayout.PAGE_AXIS));
        UpgradesPanelSub3.setBorder(BorderFactory.createCompoundBorder(raisedbevel, loweredbevel));

        UpgradesPanelSub.add(Labels.PlayerLabel);
        UpgradesPanelSub.add(jbtnUpgradeLevel);
        UpgradesPanelSub2.add(Labels.GarageLabel);
        UpgradesPanelSub2.add(jbtnUpgradeGarageLevel);
        UpgradesPanelSub3.add(Labels.BoxesLVLLabel);
        UpgradesPanelSub3.add(jbtnUpgradeBoxesLevel);

        UpgradesPanel.add(new JLabel(""));
        UpgradesPanel.add(new JLabel(""));
        UpgradesPanel.add(new JLabel(""));
        UpgradesPanel.add(UpgradesPanelSub);
        UpgradesPanel.add(UpgradesPanelSub2);
        UpgradesPanel.add(UpgradesPanelSub3);
        UpgradesPanel.add(new JLabel(""));
        UpgradesPanel.add(new JLabel(""));
        UpgradesPanel.add(new JLabel(""));

【问题讨论】:

  • 为减少混淆,我建议您查看 Java 编码约定,尤其是它建议变量和字段名称应以小写字符开头的部分(例如 upgradesPanel)。
  • @Thomas 是的,对此感到抱歉.. 我已经阅读了它,但在这一刻,我不想重写所有 ~10'000 行,并检查一下,小写字母,在哪里大,我稍后再做。不过谢谢你的建议。
  • @Thomas,谢谢我找到了。做出答案,我会检查它是否正确。

标签: java swing layout-manager centering boxlayout


【解决方案1】:

至于布局问题:有一个关于如何使用框布局的教程(查找组件的对齐方式以使它们居中):docs.oracle.com/javase/tutorial/uiswing/layout/box.html。

或者,您可以使用更易于使用 IMO 的外部布局管理器之一,例如 MigLayout。

【讨论】:

    猜你喜欢
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多