![c9a36f24cf40a760d77d90019c04a7e5.png](https://img-blog.csdnimg.cn/img_convert/c9a36f24cf40a760d77d90019c04a7e5.png)
图图本次将解决关于GUI可视化界面设计的三个问题:
- 1 如何更改GUI左上角的图标icon;
- 2 如何隐藏GUI所有边框;
- 3 如何将GUI界面最大化;
- 4 如何模拟鼠标和键盘控制;
为了更加直观地展示,制作了简易GUI界面,如下图:
![383bef1f246be4c82f8244561145e9fa.png](https://img-blog.csdnimg.cn/img_convert/383bef1f246be4c82f8244561145e9fa.png)
实现效果:
![1d9ebae4beea65fd617b01a41df3f55d.png](https://img-blog.csdnimg.cn/img_convert/1d9ebae4beea65fd617b01a41df3f55d.png)
![7446e1d6ccf5a17d67c4c875e9ff17f1.png](https://img-blog.csdnimg.cn/img_convert/7446e1d6ccf5a17d67c4c875e9ff17f1.png)
![37a1613d5ac5715a61b2dc6c117e47c5.png](https://img-blog.csdnimg.cn/img_convert/37a1613d5ac5715a61b2dc6c117e47c5.png)
下面依次说明
1 更改GUI的logo为指定图片
需要写在自己的GUI界面的创建回调中
![98daabebdfbcb92011d6f5afbed047c0.png](https://img-blog.csdnimg.cn/img_convert/98daabebdfbcb92011d6f5afbed047c0.png)
Frame=get(hObject,'JavaFrame') %hObject是想改变的GUI句柄
set(Frame,'FigureIcon',javax.swing.ImageIcon('tutu.png')) %logo.jpg是自己的图标
2 隐藏GUI所有边框
isTran
是用于记录边框是否隐藏的变量,存在控件中!undecorateFig
与redecorateFig
是一对反函数
isTran=getappdata(hObject,'isTran');
if isTran == 1
undecorateFig(hObject.Parent)
else
redecorateFig(hObject.Parent)
end
setappdata(hObject,'isTran',~getappdata(hObject,'isTran'));
3 GUI界面最大化
首先需要打开GUI的可调节选项,再去调整大小 maxFigure
即为最大化函数
set(hObject.Parent,'Resize','on');
maxFigure(hObject.Parent)
function maxFigure(figureHandle)
% 将figure窗口最大化
warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % 关闭相关的警告提示(因为调用了非公开接口)
jFrame = get(figureHandle,'JavaFrame'); % 获取底层 Java 结构相关句柄吧
set(jFrame,'Maximized',1); %设置其最大化为真(0 为假)
warning('on','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % 打开相关警告设置
set(figureHandle,'Menu','none','Toolbar','none');
end
4 - 模拟鼠标和键盘控制;
% 首先在Matlab中添加以下代码,引用java.awt.Robot类,并实例化
import java.awt.Robot;
import java.awt.event.*;
robot = java.awt.Robot;
%%子函数区
PS:补充JAVA中的键盘控制命令
![1f2b64074dad9d67c367f0f9d7653c43.png](https://img-blog.csdnimg.cn/img_convert/1f2b64074dad9d67c367f0f9d7653c43.png)
如需完整的.m和.fig文件请看本人主页
未完待续...