我开发了一个独立的MATLAB应用程序。要使用自定义的图形窗口替换图形窗口上的MATLAB图标,我使用了以下代码:
jframe = get(hFig,'javaframe');
S1=pwd; S2='\appleo.png'; S={[S1 S2]};
jIcon=javax.swing.ImageIcon(S);
jframe.setFigureIcon(jIcon);
当程序在MATLAB中运行时,它工作正常,我得到图形窗口的新图标。但是当这个程序打包到一个独立的应用程序时,'MATLAB图标'将替换为'Java图标'而不是自定义的图标。为什么?出路是什么?
答案 0 :(得分:0)
问题主要在于您从命令pwd
获取PNG文件的位置,对于已编译的应用程序,该命令将不会提供与常规MATLAB中相同的结果。< / p>
编译应用程序时,需要注意在哪里找到这样的资源文件 - 你需要在编译的应用程序中打包它们,然后在代码中引用它们相对于命令输出的位置{{1} },它为您提供了解压缩已编译应用程序的路径。
你还有第二个问题,那就是MATLAB和MATLAB编译器的许可协议明确禁止替换图形窗口的图标。你正在做的是违反许可证。
最后,很快你就会遇到第三个问题,即在接下来的几个版本中,MathWorks将从基于Java的图形窗口转移到基于HTML的图形窗口(请参阅更多App Designer)最近的发布,形成了这个的初始阶段)。因此,如果您打算在未来版本的MATLAB中开发应用程序,您将无法以这种方式更改窗口图标,因为窗口将没有Java框架。