簡體   English   中英

GroupLayout無法按預期運行

[英]GroupLayout not functioning as expected

我正在嘗試創建一個掃雷游戲,並在頂部的GridLayout和底部的JPanel周圍設計了界面。 我在底部的信息面板上安排JComponents時遇到問題。 我正在使用GroupLayout在信息面板中安排項目。

下面是其外觀的基本圖:

計划

這是實際結果:

結果

我不明白為什么最底層的JLabel(大的JLabel(是playerXTurnIndicator標簽)根本不顯示。 當然,當默認情況下將它們添加到沒有文本的組中時,它們是否采用了水平或垂直布局所規定的區域大小?

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);
}

問候,

傑米

顯示了JLabel(因此底部有可用空間),但沒有顏色。 請改用JPanels(背景僅適用於不透明的組件,請參見http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#setBackground%28java.awt.Color%29 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM