首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GroupLayout未按预期运行

GroupLayout未按预期运行
EN

Stack Overflow用户
提问于 2013-02-06 22:08:29
回答 1查看 263关注 0票数 2

我试图创建一个扫雷舰类型的游戏,并已围绕在顶部的GridLayout和底部的JPanel设计了界面。我在底部的信息面板上排列JComponents时遇到了问题。我正在使用GroupLayout来排列信息面板中的项目。

下面是它应该如何显示的基本图形:

这是实际的结果:

我不明白为什么最底层的标签(大的是playerXTurnIndicator标签)根本没有显示出来。默认情况下,当它们被添加到没有文本的组中时,它们肯定会采用水平或垂直布局指定的区域大小?

代码语言:javascript
运行
复制
private void createComponents() {     
    playerOneNameLabel = new JLabel("Name : ");
    playerTwoNameLabel = new JLabel("Name : ");
    playerOneScoreLabel = new JLabel("Score : ");
    playerTwoScoreLabel = new JLabel("Score : ");

    playerOneNameDataLabel = new JLabel("");
    playerTwoNameDataLabel = new JLabel("");
    playerOneScoreDataLabel = new JLabel("0");
    playerTwoScoreDataLabel = new JLabel("0");

    playerOneTurnIndicatorLabel = new JLabel();
    playerOneTurnIndicatorLabel.setBackground(Color.GREEN);
    playerOneTurnIndicatorLabel.setPreferredSize(new Dimension(100, 20));

    playerTwoTurnIndicatorLabel = new JLabel();
    playerTwoTurnIndicatorLabel.setBackground(Color.RED);
    playerTwoTurnIndicatorLabel.setPreferredSize(new Dimension(100, 20));

    infoMinesRemainingLabel = new JLabel("Mines Remaining : ");
    infoMinesRemainingData = new JLabel("0");

    infoTileCoordLabel = new JLabel("Tile : ");
    infoTileCoordDataLabel = new JLabel("0, 0");

    playerOneBombButton = new JButton("Bomb");
    playerTwoBombButton = new JButton("Bomb");

    GroupLayout layout = new GroupLayout(this);

    layout.setAutoCreateContainerGaps(true);
    layout.setAutoCreateGaps(true);

    layout.setHorizontalGroup(
            layout.createSequentialGroup()
                .addGroup(
                    layout.createSequentialGroup()
                        .addGroup(
                            layout.createParallelGroup()
                                .addGroup(
                                    layout.createSequentialGroup()
                                        .addComponent(playerOneNameLabel)
                                        .addComponent(playerOneNameDataLabel))
                                .addGroup(
                                    layout.createSequentialGroup()
                                        .addComponent(playerOneScoreLabel)
                                        .addComponent(playerOneScoreDataLabel))
                                .addComponent(playerOneTurnIndicatorLabel))
                        .addComponent(playerOneBombButton))
                .addGap(10)
                .addGroup(
                    layout.createSequentialGroup()
                        .addGroup(
                            layout.createParallelGroup()
                                .addComponent(infoMinesRemainingLabel)
                                .addComponent(infoTileCoordLabel))
                        .addGroup(
                            layout.createParallelGroup()
                                .addComponent(infoMinesRemainingData)
                                .addComponent(infoTileCoordDataLabel)))
                .addGap(10)
                .addGroup(
                    layout.createSequentialGroup()
                        .addComponent(playerTwoBombButton)
                        .addGroup(
                            layout.createParallelGroup()
                                .addGroup(
                                    layout.createSequentialGroup()
                                        .addComponent(playerTwoNameLabel)
                                        .addComponent(playerTwoNameDataLabel))
                                .addGroup(
                                    layout.createSequentialGroup()
                                        .addComponent(playerTwoScoreLabel)
                                        .addComponent(playerTwoScoreDataLabel))
                                .addComponent(playerTwoTurnIndicatorLabel))));

    layout.setVerticalGroup(
            layout.createParallelGroup()
                .addGroup(
                    layout.createParallelGroup()
                        .addGroup(
                            layout.createSequentialGroup()
                                .addGroup(
                                    layout.createParallelGroup()
                                        .addComponent(playerOneNameLabel)
                                        .addComponent(playerOneNameDataLabel))
                                .addGroup(
                                    layout.createSequentialGroup()
                                        .addGroup(
                                            layout.createParallelGroup()
                                                .addComponent(playerOneScoreLabel)
                                                .addComponent(playerOneScoreDataLabel)))
                                .addComponent(playerOneTurnIndicatorLabel))
                        .addComponent(playerOneBombButton)
                    )
                .addGap(50)
                .addGroup(
                    layout.createSequentialGroup()
                        .addGroup(
                            layout.createParallelGroup()
                                .addComponent(infoMinesRemainingLabel)
                                .addComponent(infoMinesRemainingData))
                        .addGroup(
                            layout.createParallelGroup()
                                .addComponent(infoTileCoordLabel)
                                .addComponent(infoTileCoordDataLabel)))
                .addGap(50)
                .addGroup(
                    layout.createParallelGroup()
                        .addComponent(playerTwoBombButton)
                        .addGroup(
                            layout.createSequentialGroup()
                                .addGroup(
                                    layout.createParallelGroup()
                                        .addComponent(playerTwoNameLabel)
                                        .addComponent(playerTwoNameDataLabel))
                                .addGroup(
                                    layout.createParallelGroup()
                                        .addComponent(playerTwoScoreLabel)
                                        .addComponent(playerTwoScoreDataLabel))
                                .addComponent(playerTwoTurnIndicatorLabel))));

    this.setLayout(layout);
}

致以敬意,

杰米

EN

回答 1

Stack Overflow用户

发布于 2013-02-06 22:40:20

显示了JLabels (因此底部的可用空间),但没有颜色。请改用JPanels (背景仅适用于不透明组件,请参见http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#setBackground%28java.awt.Color%29)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14731062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档