0

我有一个类 PanelTrial 扩展了 JPanel 并实现了 GroupLayout。在其中,我有一个 JTabbedPane,即左侧的 jTabbedPane 和另一个 JPanel,即右侧的 rightPanel。在 rightPanel 中,我在运行时交替加载 2 个面板(即 compoPanel、btnsPanel)。

我的问题:compoPanel、btnsPanel 的宽度不同(我希望它不同)。最初,compoPanel(在 W 中较大)被加载到 rightPanel 中。我正在寻找的是,当我在 rightPanel 中加载 btnsPanel 时,我希望 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