UI に SWING を使用して Java アプリを作成しています。LayoutManager の選択は GroupLayout に行きますが、今はコンポーネントに問題があります。
基本的なレイアウトは 3 つの列と 2 つの行で構成され (以下のコードでわかるように、ネストされた行があります)、2 番目の行には JCheckBox のリストを含む JPane のみが含まれます。
私の問題は、他の列のサイズに影響を与えずに、その JPanel を列全体にまたがるように挿入したいことです (つまり、キャンバスは長方形ではなく正方形でなければなりません)。
可能ですか、それとも LayoutManager を変更する必要がありますか?
コードは次のとおりです。
//create and set LayoutManager
GroupLayout gp = new GroupLayout(this.getContentPane());
gp.setAutoCreateContainerGaps(true);
gp.setAutoCreateGaps(true);
this.setLayout(gp);
//set alignment criteria
GroupLayout.Alignment hAlign = GroupLayout.Alignment.TRAILING;
GroupLayout.Alignment vAlign = GroupLayout.Alignment.BASELINE;
//add component into layout
//set horizontal group
gp.setHorizontalGroup(gp.createSequentialGroup()
.addGroup(gp.createParallelGroup(hAlign)
.addComponent(imageCanvas)
.addComponent(densitiesPanel))
.addGroup(gp.createParallelGroup(hAlign)
.addComponent(projectPathField)
.addComponent(sourceDensityLabel)
.addComponent(sourceSizeLabel))
.addGroup(gp.createParallelGroup(hAlign)
.addComponent(projectPathButton)
.addComponent(sourceDensityComboBox)
.addComponent(sourceSizeTextField))
);
//set vertical group
gp.setVerticalGroup(gp.createSequentialGroup()
.addGroup(gp.createParallelGroup(vAlign)
.addComponent(imageCanvas)
.addGroup(gp.createSequentialGroup()
.addGroup(gp.createParallelGroup(vAlign)
.addComponent(projectPathField)
.addComponent(projectPathButton))
.addGroup(gp.createParallelGroup(vAlign)
.addComponent(sourceDensityLabel)
.addComponent(sourceDensityComboBox))
.addGroup(gp.createParallelGroup(vAlign)
.addComponent(sourceSizeLabel)
.addComponent(sourceSizeTextField)))
)
.addComponent(densitiesPanel)
);