0

我正在尝试实现以下基于图块的设置:游戏板

这是我的代码当前正在生成的内容:显然不是正确的游戏板。

下面是我当前生成的代码片段。为了澄清起见,我尝试将northCentralAreasouthCentralArea组件(任务 3、任务 4... 等到 GRINNING LION TAVERN ;和 CASTLE WATERDEEP、高级选择 3... 等到 Intrigue Discard )组合成JPanel它们自己的单个组件希望在设置中更容易对齐GroupLayout。底部的“玩家区”也是自己的JPanel

private void generateLayout() {
        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);

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

        layout.setHorizontalGroup(layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                 .addGap(100)
                 .addComponent(advancedBuildingTiles[20])
                 .addComponent(advancedBuildingTiles[12])
                 .addComponent(advancedBuildingTiles[6])
                 .addComponent(advancedBuildingTiles[14])
                 .addComponent(advancedBuildingTiles[23])
                 .addGap(100))
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                 .addGap(50)
                 .addComponent(advancedBuildingTiles[16])
                 .addComponent(advancedBuildingTiles[8])
                 .addComponent(advancedBuildingTiles[2])
                 .addComponent(advancedBuildingTiles[0])
                 .addComponent(advancedBuildingTiles[4])
                 .addComponent(advancedBuildingTiles[11])
                 .addComponent(advancedBuildingTiles[19])
                 .addGap(50))
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)
                 .addGroup(layout.createSequentialGroup()
                      .addComponent(availableQuests[0])
                      .addComponent(availableQuests[1]))
                 .addComponent(northCentralArea)
                 .addGroup(layout.createSequentialGroup()
                      .addComponent(basicBuildingTiles[6])
                      .addComponent(advancedBuildingChoices[1])
                      .addComponent(advancedBuildingChoices[2])
                      .addComponent(basicBuildingTiles[7]))
                 .addComponent(southCentralArea)
                 .addComponent(playerArea))                 
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                 .addGap(50)
                 .addComponent(advancedBuildingTiles[18])
                 .addComponent(advancedBuildingTiles[10])
                 .addComponent(advancedBuildingTiles[5])
                 .addComponent(advancedBuildingTiles[1])
                 .addComponent(advancedBuildingTiles[3])
                 .addComponent(advancedBuildingTiles[9])
                 .addComponent(advancedBuildingTiles[17])
                 .addGap(50))
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                 .addGap(100)
                 .addComponent(advancedBuildingTiles[22])
                 .addComponent(advancedBuildingTiles[15])
                 .addComponent(advancedBuildingTiles[7])
                 .addComponent(advancedBuildingTiles[13])
                 .addComponent(advancedBuildingTiles[21])
                 .addGap(100)));

        layout.setVerticalGroup(layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                 .addGap(200)
                 .addComponent(availableQuests[0])
                 .addComponent(availableQuests[1]))
                 .addGap(200)
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                 .addGroup(layout.createSequentialGroup()
                      .addGap(50)
                      .addComponent(advancedBuildingTiles[16])
                      .addComponent(northCentralArea)
                      .addComponent(advancedBuildingTiles[18])
                      .addGap(50))  
                 .addGroup(layout.createSequentialGroup()
                      .addComponent(advancedBuildingTiles[20])
                      .addComponent(advancedBuildingTiles[8])
                      .addPreferredGap(ComponentPlacement.UNRELATED)
                      .addComponent(advancedBuildingTiles[10])
                      .addComponent(advancedBuildingTiles[22]))
                 .addGroup(layout.createSequentialGroup()
                      .addComponent(advancedBuildingTiles[12])
                      .addComponent(advancedBuildingTiles[2])
                      .addPreferredGap(ComponentPlacement.UNRELATED)
                      .addComponent(advancedBuildingTiles[5])
                      .addComponent(advancedBuildingTiles[15]))
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                 .addComponent(advancedBuildingTiles[6])
                 .addComponent(advancedBuildingTiles[0])
                 .addComponent(basicBuildingTiles[6])
                 .addComponent(advancedBuildingChoices[1])
                 .addComponent(advancedBuildingChoices[2])
                 .addComponent(basicBuildingTiles[7])
                 .addComponent(advancedBuildingTiles[1])
                 .addComponent(advancedBuildingTiles[7]))
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                 .addGroup(layout.createSequentialGroup()
                      .addComponent(advancedBuildingTiles[14])
                      .addComponent(advancedBuildingTiles[4])
                      .addComponent(southCentralArea)
                      .addComponent(advancedBuildingTiles[3])
                      .addComponent(advancedBuildingTiles[13])) 
                 .addGroup(layout.createSequentialGroup()
                      .addComponent(advancedBuildingTiles[23])
                      .addComponent(advancedBuildingTiles[11])
                      .addPreferredGap(ComponentPlacement.UNRELATED)
                      .addComponent(advancedBuildingTiles[9])
                      .addComponent(advancedBuildingTiles[21]))
                 .addGroup(layout.createSequentialGroup()
                      .addGap(50)
                      .addComponent(advancedBuildingTiles[19])
                      .addPreferredGap(ComponentPlacement.UNRELATED)
                      .addComponent(advancedBuildingTiles[17])
                      .addGap(50))
            .addGap(200)
            .addComponent(playerArea)
            .addGap(200))));
    }

显然,我不明白要完成这项工作需要什么。任何帮助将非常感激。即使这意味着切换到不同的布局管理器(我希望以此作为学习 GroupLayout 的好机会)。干杯!

4

0 回答 0