欢迎光临散文网 会员登陆 & 注册

2020-03-17 MATLAB App Designer——密码框功能的实现

2020-04-04 23:36 作者:-何其-  | 我要投稿

1、字体设置——将 uieditfield 的'FontName'属性设置为'Symbol'

输入的密码为:xxxsafdaqefs12fasda

显示的密码

引用:https://blog.csdn.net/shitao99/article/details/85938472
评价:效果不好,数字无法隐藏

2、函数设计——“KeyPressFcn”函数与userdata

输入密码时,输入的字符被星号代替,但是会发现光标位于最前面

代码见 https://blog.csdn.net/shitao99/article/details/85938472

评价:光标在最前面,难用


3、函数设计——'ValueChangedFcn'函数

对uieditfield的ValueChangedFcn设置回调 @MailboxPasswordChangedFcn

首先新建一个密码框

% app.Mailbox.Password 为公共变量用于存储密码的 

% 新建一个密码框,并将句柄赋值给app.Object.Password                               

app.Object.Password = uieditfield(Mailbox_Sender,... 

                        'Value',app.Mailbox.Password,...  

                        'HorizontalAlignment','left',... 

                         'Editable','on','Enable','on',...  

                        'Position',Position_editfield,...                                                                                                'ValueChangedFcn',@MailboxPasswordChangedFcn);  % 设置值变化后的回调函数

设置回调函数

         

 function MailboxPasswordChangedFcn(source,event)                % app.Mailbox.Password 为公共变量用于存储密码的                TEMP = app.Object.Password.Value; 

 if ~contains(TEMP,'*') 

      app.Mailbox.Password = TEMP;

else 

     Id = 1:l

     ength(TEMP);

     Id(:,strfind(TEMP,'*'))=[];  

     app.Mailbox.Password(Id)=TEMP(Id);  

end 

if ~isempty(TEMP)  

     app.Object.Password.Value(1:length(TEMP)) = '*';           

end

效果展示

3.1 密码输入过程中

输入过程中不执行替换字符

3.2 密码输入完成后


鼠标点击非密码窗口或敲击确定键后执行替换字符

4. 函数设计——'ValueChangingFcn'函数

同方法3的代码,但在运行的时候存在一个问题,就是最后一次输入的字符无法替换成星号

2020-03-17 MATLAB App Designer——密码框功能的实现的评论 (共 条)

分享到微博请遵守国家法律