0

クラス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() を呼び出してみましたが、それも役に立ちませんでした。

どんな助けでも大歓迎です。

ありがとう

4

0 に答える 0