Question

I am trying to achieve the following sort of tile-based setup : Game Board

This is what my code is currently producing : Clearly not the right game board.

Below is my current code snippet that is generating this. For clarification, I have tried to combine the northCentralArea and southCentralArea components (Quest 3, Quest 4... etc. to THE GRINNING LION TAVERN; and CASTLE WATERDEEP, Advanced Choice 3... etc. to Intrigue Discard) into single JPanel components of their own in hopes that it would be easier to align within the GroupLayout setup. The "player area" at the bottom is also in its own 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))));
    }

Clearly I am not understanding what it takes to make this work. Any help would be much appreciated. Even if it means switching to a different layout manager (I was hoping to use this as a good opportunity to learn GroupLayout). Cheers!

No correct solution

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top