我有一个带有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();
}
答案 0 :(得分:1)
致电
invalidate();
validate();
repaint();
或者最好使用CardLayout和子面板来切换它们。
此致 的STA
答案 1 :(得分:0)
我有两条建议可以解决您的问题。
我相信你打电话给this.revalidate();
。
如果这不起作用,请尝试直接调用this.doLayout();
。