0

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!

Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433
Billy M.
  • 369
  • 2
  • 16
  • 1
    Just advice break that to more parts.Slice That image into multiple parts and you can even use more layouts like that and When you decide to make more*components* included to your map.It will be way way way easyer – Tomas Bisciak Feb 21 '14 at 23:09
  • 2
    You could use a combination of BorderLayout, GridLayout and GridBagLayout – MadProgrammer Feb 21 '14 at 23:11
  • @MadProgrammer Thanks to both for your idea of changing my direction. I will probably answer my own question with this type of advice. – Billy M. Feb 22 '14 at 03:13

0 Answers0