Как поменять два компонента - PullRequest
0 голосов
/ 04 октября 2010

У меня есть JPanel с GridBagLayout.И я хотел бы дать пользователю возможность переключаться между двумя компонентами.Я попробовал это так, но это не работает, что не так?

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 ]

1 голос
/ 04 октября 2010

Позвоните

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

Или лучше использовать CardLayout и подпанель для их переключения.

С уважением, Стас

0 голосов
/ 04 октября 2010

У меня есть два предложения, которые могут решить вашу проблему.

Я полагаю, что вы хотите позвонить this.revalidate();.

Если это не сработает, попробуйте позвонить this.doLayout(); напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...