[英]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.