java - 使 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, 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() 方法的其他元素一样不可见?
解决方案
好的,如果其他人遇到同样的问题,这就是我为解决它所做的:
我将变量jp
从createStop()
方法中取出并使其成为全局变量。
然后,根据条件,在将 JPanel 的可见性设置为 true 或 false 之后,我在 JPanel 上调用了 revalidate():
if (Condition){
jp.setVisible(false);
jp.revalidate();
} else {
jp.setVisible(true);
jp.revalidate();
}
推荐阅读
- sql - SQL在oracle中重复生成1到9的序列号
- regex - 如何将 TypeSense 与我的 MongoDB 数据库链接?
- r - 如何根据用户输入创建具有实时数据的闪亮应用程序?
- vue-component - “属性或方法“项目”未在实例上定义,但在渲染期间引用”
- swiftui - SwiftUI 弹出框背景颜色
- python - 在python中用多行替换一行的最佳方法是什么?
- xml - Powershell替换XML文件中的值
- c# - 为什么航点列表和代理列表是空的?
- javascript - 向 Docusaurus 网站的 URL 添加可选参数
- php - 而不是 PHP 中,我该怎么做?