使用 Java Swing 构建丰富的图形用户界面
1. 组件重父化问题
在将组件移动到新的目标容器时,jCanvas 中的坐标轴也会随之移动。需要注意的是,要相应地设置目标容器的大小。重父化操作看似可行,但存在一些问题。当关闭原始的 Matlab 图形窗口时,Java 框架窗口可能会出现卡顿现象,所以要确保原始窗口和新窗口同时保持打开或关闭状态。
许多 HG 监听器仍然连接在原始的 Matlab 图形窗口上,当进行一些 HG 操作时,图形会出现闪烁。因此,建议将原始的 Matlab 图形窗口保持打开但隐藏,可使用 set(gcf,'Visible','off') 实现。不过,这样做会导致一些交互功能(如交互式缩放)失效。
由于原始的组件监听器仍然附着在原始的 Matlab 图形窗口上,所以需要手动处理其他监听器(如调整大小、删除等),并将它们重新附着到新的 Java 容器上。
重父化技术可以有效地去除图形窗口的标题栏,只需在显示 jf2 之前指定 jf2.setUndecorated(true) 。但重父化过程文档资料较少,要正确编程并处理所有边缘情况非常困难。因此,建议优先使用 Matlab 图形窗口而非 Java 框架,仅将 Java 容器用于纯 Java 组件,而不是 Matlab 组件,一般应将 Java 组件添加到 Matlab 图形窗口中,而非将 Matlab 组件添加到 Java 框架中。
另外,从 Java 内部将 Java 组件添加到 Matlab 创建的框架中也并非易事,还会出现重绘问题。
在 CSSM 上有人
超级会员免费看
订阅专栏 解锁全文

54

被折叠的 条评论
为什么被折叠?



