在运行时更改和调整面板大小

时间:2013-12-11 13:37:08

标签: java swing resize jpanel grouplayout

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

我的问题:compoPanel的宽度,btnsPanel是不同的(我希望它不同)。最初compoPanel(在W中更大)加载在右侧面板中。我正在寻找的是,当我在rightPanel中加载btnsPanel时,我希望jTabbedPane的大小增加并占用所有可用空间。我更新了jTabbedPane&的PreferredSize。 rightPanel - 它们的大小也会发生变化。但是,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(),但这也没有帮助我。

任何帮助都非常感激。

由于

0 个答案:

没有答案