MATLAB编写用户登陆界面小结——更改界面左上角图标、输入用户名提醒和输入密码隐藏

笔者最近参加了一个小比赛,需要用MATLAB 写个软件,这里总结一下写登录界面时的一些心得体会。

实现方法是找的网上大牛提供的经验并结合自己的改进,这里就不一一列出链接,如果侵权,请联系笔者。

直接给出效果图:

主要是实现三个小功能,一个是更改了左上角的小图标;一个是用户名输入框有提醒,当鼠标点击输入框时,提醒内容消失;一个是输入密码时,会自动隐藏输入密码,输入显示为星号。以下一一列出功能实现参考。

1.更改了MATLAB GUI左上角的小图标

这个功能需要一个chgicon子函数,该子函数为大牛提供:

function chgicon(hfig,iconfile)


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','');lete the temporary figure name
% end

然后在MATLAB GUI 开头的OpeningFcn()函数下写入以下内容:

iconfile = 'icon\HITlogo.jpg';
chgicon(hObject,iconfile)

其中,iconfile为自己设置的图标地址。

一般在MATLAB GUI 开头的OpeningFcn()函数下写入内容时,都是如下地方插入自己写入代码。

handles.output = hObject;
% 写入代码处
% Update handles structure
guidata(hObject, handles);

备注:该方法在主界面实现起来很方便有效,但是有时如果主界面调用了子界面,子界面应用该方法更改图标的时候,可能会不好使,笔者暂时没有找到原因,欢迎交流。

2.用户名输入框提醒,点击则消失

上图中用户名输入框内有“请输入用户名或教师工号”的提醒内容,并且提醒内容的颜色比较浅。这个提醒内容可以很方便的在输入框(可编辑文本)的String属性中提前加入,并更改ForegroundColor属性以调整颜色,至于字体(FnotName属性),默认是

MS Sans Serif,可改为Microsoft Yahei(微软雅黑)。

此时运行GUI 便会看到输入框内有提示内容。

但是如何实现点击输入框时,提示内容消失呢?且提示内容消失后,输入了用户名,再次点击输入框,刚输入的内容不会再次消失。

为了实现这一功能,右键用户名输入框,点击查看回调下的ButtonDownFcn,创建输入框(可编辑文本)ButtonDownFcn函数

在ButtonDownFcn函数下,输入以下代码内容:

set(hObject, 'String', '', 'Enable', 'on');
set(hObject, 'ForegroundColor', [0, 0, 0]);
uicontrol(hObject);

第一行代码为清空输入框内容;

第二行代码为把字体颜色调成默认的黑色;

第三行代码为继续控制GUI界面。如果少了这一句,当点击输入框时,前两行代码正常执行,提示内容消失,但当键盘开始输入时,输入内容会输入在MATLAB的命令行窗口。

3.自动隐藏输入密码为星号

为了实现这一功能,右键密码输入框,点击查看回调下的KeyPressFcn,创建输入框(可编辑文本)KeyPressFcn函数

在KeyPressFcn函数下,输入以下代码内容:

global passWord

passWord = get( hObject, 'UserData' );
switch eventdata.Key
   case 'backspace'
      passWord = passWord( 1:end-1 );
   case 'return'
%       uiresume;
      return;
   otherwise
      passWord = [passWord eventdata.Character];
end
set( hObject, 'UserData', passWord );
set( hObject, 'String', char( '*'*sign(passWord) ) );

其中 passWord 即为输入的密码字符串。效果如下

备注:该方法唯一不足之处在于,输入密码时,光标始终在左边!

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值