首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让TitledBorder隐形?

让TitledBorder隐形?
EN

Stack Overflow用户
提问于 2020-09-10 16:41:48
回答 1查看 21关注 0票数 0

因此,我有以下JComponent,我希望在某些情况下使其不可见:

代码语言:javascript
复制
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, 0,0,false,"N","NW",1,1 );
    gp.add( stopYes, 1,0,false,"N","NW",1,1 );
    gp.add( stopTimeout, 2,0,false,"N","NW",1,1 );
    gp.add( stopKill, 3,0,false,"N","NW",1,1 );
    //gp.add( new FillArea(0,0), 3,2,true,"H","C",1,1 );
    gp.add( new FillArea(0,0), 100,100,true,"B","C",1,1 );

    return jp;
}

我可以让所有东西都看不见,除了titledBorder,当我这样做的时候,它不会因为某种原因消失:

代码语言:javascript
复制
    createStop().setVisible(false);

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

代码语言:javascript
复制
        createStop().setBorder(null);

当我尝试这样做的时候,同样的事情:

代码语言:javascript
复制
createStop().setBorder(BorderFactory.createEmptyBorder());

下面是创建边框的方式:

代码语言:javascript
复制
protected Border buildBorder( String s )
{
    return BorderFactory.createTitledBorder( BORDER_TITLE, s, TitledBorder.LEADING, TitledBorder.TOP, FONT_TITLE );
}

有没有办法让它像createStop()方法的其他元素一样不可见?

EN

回答 1

Stack Overflow用户

发布于 2020-09-10 19:35:00

好吧,如果其他人遇到了同样的问题,下面是我为解决它所做的:

我从createStop()方法中去掉了变量jp,并使其成为一个全局变量。

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

代码语言:javascript
复制
if (Condition){
    jp.setVisible(false);
    jp.revalidate();
} else {
    jp.setVisible(true);
    jp.revalidate();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63825958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档