- 积分
- 42
- 注册时间
- 2003-10-15
- 仿真币
-
- 最后登录
- 1970-1-1
|
以前写过一个更改Figure图标的函数(见:http://e.simwe.com/28413/viewspace-3405和http://forum.simwe.com/redirect.php?goto=findpost&pid=1646591&ptid=603155),是通过Figure的JavaFrame实现的。遗憾的是,从R2009a开始,使用这个函数时开始出现如下警告:
Warning: figure JavaFrame property will be obsoleted in a future release. For more information see the
JavaFrame resource on the MathWorks Web site.
也就是说,在以后的版本中Figure的JavaFrame属性就没法用了。以前写的那个changeicon函数也会随之失灵了。
修改Figure图标的方法不止一种,论坛里就可以找到几个方案。但JAVA方法相对来说简单一些,可以写成MATLAB中的函数来方便的调用。所以还是比较喜欢这种方法。MATLAB的界面是用JAVA实现的,理论上来说,界面上的所有东西都是可以改的!!虽然JavaFrame被封掉了,但肯定还有其他方法来改Figure的图标。经过一番研究,终于找到了这样一种方法。全部代码如下:
- function chgicon(hfig,iconfile)
- %CHGICON changes the Figure HFIG's icon to the icon specified by ICONFILE
- % HFIG must be a figure handle.
- % ICONFILE is a string specifies the path to an imagefile.
- %
- %WARNING:
- % Changing the matlab icon violate the mathworks license. THis function can
- % only be used for study purpose. Please delete it within 24 hours.
- %
- % Author: junziyang (simwer@126.com)
- % Ver.1.0
- % 2009-05-20
- error(nargchk(2,2,nargin));
- if ~ishandle(hfig) && ~isequal(get(hfig,'Type'),'figure')
- error('The first input argument must be a Figure handle.');
- end
- if ~ischar(iconfile) || ~exist(iconfile,'file')
- error('Icon file name is not input properly.');
- end
- mde = com.mathworks.mde.desk.MLDesktop.getInstance;
- if isequal(get(hfig,'NumberTitle'),'off') && isempty(get(hfig,'Name'))
- figTag = 'junziyang'; %Name the figure temporarily
- set(hfig,'Name',figTag);
- elseif isequal(get(hfig,'NumberTitle'),'on') && isempty(get(hfig,'Name'))
- figTag = ['Figure ',num2str(hfig)];
- elseif isequal(get(hfig,'NumberTitle'),'off') && ~isempty(get(hfig,'Name'))
- figTag = get(hfig,'Name');
- else
- figTag = ['Figure ',num2str(hfig),': ',get(hfig,'Name')];
- end
- drawnow %Update figure window
- jfig = mde.getClient(figTag); %Get the underlying JAVA object of the figure.
- jfig.setClientIcon(javax.swing.ImageIcon(iconfile));
- if isequal(get(hfig,'Name'),'junziyang')
- set(hfig,'Name',''); %Delete the temporary figure name
- end
复制代码
修改Figure的图标违反了Mathworks的许可,所以该函数仅供研究学习之用,责任自负。 |
评分
-
1
查看全部评分
-
|