次のようなタイルベースのセットアップを実現しようとしています:
これは私のコードが現在生成しているものです:
以下は、これを生成している現在のコード スニペットです。明確にするために、私はコンポーネント (クエスト 3、クエスト 4... などを THE GRINNING LION TAVERN に、CASTLE WATERDEEP、Advanced Choice 3... などを Intrigue Discard に) を組み合わせて、独自の単一northCentralArea
のコンポーネントにしようとしました。セットアップ内での調整が容易になることを願っています。下部にある「プレイヤーエリア」も独自のものです。southCentralArea
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 を学ぶ良い機会として利用したいと考えていました)。乾杯!