如何切换两个组件

时间:2010-10-04 08:48:12

标签: java swing

我有一个带有GridBagLayout的JPanel。我想给用户切换两个组件的可能性。我这样试过,但它不起作用,出了什么问题?

public void switchSites( boolean b )
{
    this.remove( blueSite );
    this.remove( whiteSite );

    GridBagConstraints c = new GridBagConstraints();
    c.anchor = GridBagConstraints.CENTER;
    c.fill = GridBagConstraints.BOTH;
    c.gridheight = 3;
    c.gridx = 0;
    c.gridy = 0;
    c.weightx = 1.0;
    c.weighty = 1.0;

    if( b )
    {
        this.add( whiteSite, c );
        c.gridx = 2;
        this.add( blueSite, c );
    }
    else
    {
        this.add( blueSite, c );
        c.gridx = 2;
        this.add( whiteSite, c );

    }

    this.repaint();
    this.validate();

}

2 个答案:

答案 0 :(得分:1)

致电

invalidate();
validate();
repaint();

或者最好使用CardLayout和子面板来切换它们。

此致 的STA

答案 1 :(得分:0)

我有两条建议可以解决您的问题。

我相信你打电话给this.revalidate();

如果这不起作用,请尝试直接调用this.doLayout();