声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2951|回复: 9

[GUI界面] matlab界面实现密码输入功能

[复制链接]
发表于 2010-11-18 18:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
请问有谁知道MATLAB的界面设计中,输入密码是如何实现的?即把输入的字符,用****代替。
回复
分享到:

使用道具 举报

发表于 2010-11-18 22:12 | 显示全部楼层
以下的m文件可以实现,你可以学习一下,但声明此文件是我在学习是从网上下载的,由于忘记了出处,这里没有给出原创者,此文件仅用于学习交流!
log_in_password.rar (12 KB, 下载次数: 27)

评分

1

查看全部评分

发表于 2010-11-19 15:54 | 显示全部楼层
回复 2 # zhouyang664 的帖子

可否将a2.m直接贴出
不然打开, 许多字体会成乱码
发表于 2010-11-19 16:03 | 显示全部楼层
在罗老师的《matlab GUI设计学习手记》书中有程序
源程序也可以在北京航空航天大学的出版社下载的到
  1. function varargout = a2(varargin)
  2. gui_Singleton = 1;
  3. gui_State = struct('gui_Name',       mfilename, ...
  4.                    'gui_Singleton',  gui_Singleton, ...
  5.                    'gui_OpeningFcn', @a2_OpeningFcn, ...
  6.                    'gui_OutputFcn',  @a2_OutputFcn, ...
  7.                    'gui_LayoutFcn',  [] , ...
  8.                    'gui_Callback',   []);
  9. if nargin && ischar(varargin{1})
  10.     gui_State.gui_Callback = str2func(varargin{1});
  11. end

  12. if nargout
  13.     [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
  14. else
  15.     gui_mainfcn(gui_State, varargin{:});
  16. end

  17. function a2_OpeningFcn(hObject, eventdata, handles, varargin)
  18. handles.output = hObject;
  19. javaFrame = get(hObject, 'JavaFrame');
  20. javaFrame.setFigureIcon(javax.swing.ImageIcon('icon1.jpg'));
  21. % [num txt raw] = xlsread('user_information.xls');
  22. % if ~iscellstr(raw)
  23. %     for i = 1 : numel(raw)
  24. %         n(i) = isnumeric(raw{i});
  25. %     end
  26. %     raw{n} = num2str(raw{n});
  27. % end
  28. handles.user = 'qibbxxt';%raw(2 : end, 1)';
  29. handles.code = {'12358132134'};%raw(2 : end, 2)';

  30. guidata(hObject, handles);

  31. function varargout = a2_OutputFcn(hObject, eventdata, handles)
  32. varargout{1} = handles.output;

  33. function login_user_Callback(hObject, eventdata, handles)

  34. function login_user_CreateFcn(hObject, eventdata, handles)
  35. if ispc
  36.     set(hObject, 'BackgroundColor', 'white');
  37. else
  38.     set(hObject, 'BackgroundColor', get(0, 'defaultUicontrolBackgroundColor'));
  39. end

  40. function log_Callback(hObject, eventdata, handles)
  41. user = get(handles.login_user, 'string');
  42. code =get(gcf,'userdata');
  43. users = handles.user;
  44. codes = handles.code;
  45. n = find(strcmp(users, {user}));
  46. if ~isempty(n) && isequal(codes{n}, code)
  47.     h = msgbox('登陆成功!');
  48.     uiwait(h);
  49.     delete(gcf);
  50. %     figure(1)
  51. %     set(1, 'name', '系统界面');
  52. test_readxls_2;
  53. else
  54.     errordlg('用户名或密码错误!', '错误提示');
  55.     set(handles.login_code, 'string', '')
  56.     set(hObject, 'userdata', '')
  57. end

  58. function log_KeyPressFcn(hObject, eventdata, handles)
  59. if double(get(gcf, 'Currentcharacter')) == 13
  60.     user = get(handles.login_user,'string');
  61.     code = get(gcf, 'userdata');
  62.     users = handles.user;
  63.     codes = handles.code;
  64.     n = find(strcmp(users,{user}));
  65.     if ~isempty(n) && isequal(codes{n}, code)
  66.         h = msgbox('登陆成功!');
  67.         uiwait(h);
  68.         delete(gcf);
  69.         figure(1)
  70.         set(1, 'name', '系统界面');
  71.     else
  72.         errordlg('用户名或密码错误!', '错误提示');
  73.         set(handles.login_code, 'string', '')
  74.         set(hObject, 'userdata', '')
  75.     end
  76. end

  77. function figure1_KeyPressFcn(hObject, eventdata, handles)
  78. c = get(hObject,'Currentcharacter');
  79. if isstrprop(c,'graphic')
  80.     set(hObject, 'userdata', [get(hObject,'userdata') c])
  81.     set(handles.login_code, 'string', [get(handles.login_code,'string') '*'])
  82. else
  83.     log_KeyPressFcn(hObject, eventdata, handles);
  84.     val = double(c);
  85.     if ~isempty(val) && val == 8
  86.         str = get(hObject, 'userdata');
  87.         if ~isempty(str)
  88.             str(end) = [];
  89.         end
  90.         set(hObject,'userdata',str)
  91.         str2 = get(handles.login_code,'string');
  92.         if ~isempty(str2)
  93.             str2(end) = [];
  94.         end
  95.         set(handles.login_code,'string',str2)
  96.     end
  97. end

  98. function login_user_KeyPressFcn(hObject, eventdata, handles)
  99. log_KeyPressFcn(hObject, eventdata, handles);


复制代码
发表于 2010-11-19 20:44 | 显示全部楼层
回复 3 # Happy99 的帖子

在matlab中打开就没有问题,用记事本打开有乱码应该是回车键显示成黑方框了吧!
发表于 2010-11-19 20:53 | 显示全部楼层
回复 5 # zhouyang664 的帖子

谢谢关心, 不是回车键的问题! 我用的无法显示简体中文:@)
发表于 2010-11-19 21:03 | 显示全部楼层
回复 6 # Happy99 的帖子

我也碰到过无法显示中文的情况!
开始我以为是matlab的事儿,后来重装之后还是,最后发现是字体设置不支持中文,打开preferences字体设置选一个中文字体看一下试试吧!
发表于 2010-11-19 21:16 | 显示全部楼层
回复 7 # zhouyang664 的帖子

虽然很少使用中文, 但我用的可以显示繁体, 无法显示简体中文, 可能没有相对应的码吧
发表于 2010-11-19 21:25 | 显示全部楼层
但奇怪的是从网页复制下来的又可以显示简体中文, 但存完後再打开, 会有些显示有些不显示
电脑的东东真的不行:@L
还好很少使用中文输出
发表于 2010-11-19 23:11 | 显示全部楼层
回复 4 # qibbxxt 的帖子

很好...share
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-21 17:52 , Processed in 0.060008 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表