クラスPanelTrialがJPanelを拡張し、GroupLayoutを実装しています。その中に、JTabbedPane、つまり jTabbedPane が左側にあり、別の JPanel、つまり rightPanel が右側にあります。rightPanel では、実行時に 2 つのパネル (つまり、compoPanel、btnsPanel) を交互に読み込みます。
私の問題:compoPanel、btnsPanelの幅が異なります(そして、私はそれを変えたいです)。最初に compoPanel (W の方が大きい) が rightPanel に読み込まれます。私が探しているのは、btnsPanel を rightPanel にロードするときに、jTabbedPane のサイズを増やしてすべての空き領域を占有することです。jTabbedPane と rightPanel の PreferredSize を更新すると、それらのサイズも変更されます。しかし、rightPanel の位置が右端に移動しません。これにより、jTabbedPane の中央になります。
私が使用するコードは次のとおりです。
orgTabDimen = new Dimension(350, 600);
newTabDimen = new Dimension(500, 600);
orgRghtDimen = new Dimension(280, 574);
newRghtDimen = new Dimension(50, 574);
private void updateRightPanel(boolean showBtnPanel) {
rightPanel.removeAll();
GroupLayout layout = (GroupLayout) rightPanel.getLayout();
if (showBtnPanel) {
// SHOW BTNSpANEL
layout.setHorizontalGroup(layout.createSequentialGroup()
.addComponent(btnPanel));
layout.setVerticalGroup(layout.createParallelGroup(
Alignment.TRAILING).addComponent(btnPanel));
// Set respective dimesions
rightPanel.setPreferredSize(newRghtDimen);
this.jTabbedPane1.setPreferredSize(newTabDimen);
} else {
// SHOW COMPOpANEL
layout.setHorizontalGroup(layout.createSequentialGroup()
.addComponent(compoPanel));
layout.setVerticalGroup(layout.createParallelGroup(
Alignment.TRAILING).addComponent(compoPanel));
rightPanel.setPreferredSize(orgRghtDimen);
this.jTabbedPane1.setPreferredSize(orgTabDimen);
}
jPanel1.validate();
this.validate();
}
誰でもこの問題を解決するのを手伝ってもらえますか - ここで立ち往生しています。btnsPanel が右端に表示される方法がわかりません。invalidate() を呼び出してみましたが、それも役に立ちませんでした。
どんな助けでも大歓迎です。
ありがとう