使TitledBorder不可见?

问题描述

因此,我想在某些情况下使以下JComponent变为不可见:

private final JComponent createStop()
{
    JPanel          jp;
    GridPlacement   gp;

    jp = new JPanel();
    jp.setOpaque( false );
    jp.setBorder( buildBorder(Res.getIntl(RES+"$Border.Stop")) ); // -----> Here's the problem

    gp = new GridPlacement( jp,INS_SMALL );
    gp.add( stopNo,false,"N","NW",1,1 );
    gp.add( stopYes,1 );
    gp.add( stopTimeout,2,1 );
    gp.add( stopKill,3,1 );
    //gp.add( new FillArea(0,0),true,"H","C",1 );
    gp.add( new FillArea(0,100,"B",1 );

    return jp;
}

我能够使所有内容不可见,但titledBorder却由于某些原因而消失:

    createStop().setVisible(false);

即使我尝试将其强制设置为null,它仍然保持可见:

        createStop().setBorder(null);

当我尝试执行此操作时也是如此:

createStop().setBorder(BorderFactory.createEmptyBorder());

以下是创建边框的方法:

protected Border buildBorder( String s )
{
    return BorderFactory.createTitledBorder( BORDER_TITLE,s,TitledBorder.LEADING,TitledBorder.TOP,FONT_TITLE );
}

有什么办法可以使它像createStop()方法的其余元素一样不可见吗?

解决方法

好吧,如果有人遇到相同的问题,这是我要解决的问题:

我从jp方法中取出了变量createStop()并将其设为全局变量。

然后,根据情况,在将其可见性设置为true或false之后,我在JPanel上调用了revalidate():

if (Condition){
    jp.setVisible(false);
    jp.revalidate();
} else {
    jp.setVisible(true);
    jp.revalidate();
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...