2020-03-17 MATLAB App Designer——密码框功能的实现
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的代码,但在运行的时候存在一个问题,就是最后一次输入的字符无法替换成星号