【问题标题】:Making TitledBorder Invisible?使 TitledBorder 不可见?
【发布时间】:2020-12-28 17:33:14
【问题描述】:

所以我有以下 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, 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 在我这样做时由于某种原因不会消失:

    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() 方法的其他元素一样不可见?

【问题讨论】:

    标签: java swing jpanel jcomponent titled-border


    【解决方案1】:

    好的,如果其他人遇到同样的问题,我就是这样做的:

    我从createStop() 方法中取出变量jp 并使其成为全局变量。

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多