当在Matlab图中关闭java swing组件可见性时,会保留一个矩形



我在Matlab图中使用JProgressBar时遇到问题。我的代码如下:

figure('color',[1 1 1]);
plot(gca, [0 1],[0 1])
pb = javaObjectEDT('javax.swing.JProgressBar');
javacomponent(pb, [0 0 300 30], gcf);
pb.setVisible(false)

当进度条的可见性设置为false时,剩下的是覆盖绘图的灰色矩形。我尝试禁用或删除进度条,但无法使用对象方法。有人知道当它不可见时如何移除它吗?

发现了几个可能的解决方案,以防任何人遇到相同的问题:

  1. 对于我提供的例子,progressbar可以在图的children属性中找到,一旦找到它,就可以使用delete(fig.Children(1))或任何progressbal的索引来删除它。看起来,尽管添加到图中的顺序不同,JavaWrapper对象始终是第一个子对象,所以这可能就是为什么它即使不可见也很突出的原因
  2. 如果将其与UIFigure或其他UI组件一起使用,则组件的顺序取决于组件创建的顺序,之后可以修改该顺序。可以使用uistack(uicomp, 'top')将组件移动到前面(但不能将进度条移动到后面;matlab表示进度条的"父级"不可访问(

最新更新