如何在Netbeans Winform的密码框中实现输入内容掩码隐藏效果?

WinForm 注册表单输入框效果实现方案
你需要的占位提示+密码自动隐藏效果可以通过以下步骤快速实现:
基础实现(推荐,无需手动处理焦点逻辑)
- 首先在窗体中添加2个
TextBox控件,分别对应用户名、密码输入框 - 选中密码输入框,在属性面板设置PasswordChar属性值为
*(也可设置为圆点•等你需要的隐藏字符),此时用户输入的内容会自动隐藏,符合要求 - 在窗体代码中引入系统API,通过发送系统消息实现占位符效果,不需要额外处理焦点事件,和原生系统效果一致:
// 窗体类内部声明API和常量 private const int EM_SETCUEBANNER = 0x1501; [System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)] private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, string lParam); // 在窗体的Load事件中调用API设置占位符 private void Form1_Load(object sender, EventArgs e) { // 设置用户名输入框占位提示 SendMessage(textBox_Username.Handle, EM_SETCUEBANNER, (IntPtr)1, "请输入用户名"); // 设置密码输入框占位提示 SendMessage(textBox_Password.Handle, EM_SETCUEBANNER, (IntPtr)1, "请输入密码"); }
兼容旧系统的替代实现
如果你的项目需要兼容Windows XP等不支持上述API的系统,可以通过处理焦点事件实现:
// 用户名输入框失去焦点事件 private void textBox_Username_LostFocus(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(textBox_Username.Text)) { textBox_Username.Text = "请输入用户名"; textBox_Username.ForeColor = Color.Gray; } } // 用户名输入框获得焦点事件 private void textBox_Username_GotFocus(object sender, EventArgs e) { if (textBox_Username.Text == "请输入用户名" && textBox_Username.ForeColor == Color.Gray) { textBox_Username.Text = ""; textBox_Username.ForeColor = SystemColors.WindowText; } } // 密码输入框失去焦点事件 private void textBox_Password_LostFocus(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(textBox_Password.Text)) { textBox_Password.PasswordChar = '\0'; textBox_Password.Text = "请输入密码"; textBox_Password.ForeColor = Color.Gray; } } // 密码输入框获得焦点事件 private void textBox_Password_GotFocus(object sender, EventArgs e) { if (textBox_Password.Text == "请输入密码" && textBox_Password.ForeColor == Color.Gray) { textBox_Password.Text = ""; textBox_Password.ForeColor = SystemColors.WindowText; textBox_Password.PasswordChar = '*'; } }
补充说明:如果你实际是使用NetBeans开发Java Swing桌面应用,实现逻辑基本一致:使用
JTextField作为用户名输入框,JPasswordField作为密码输入框(默认自带输入内容隐藏效果),给两个控件添加FocusListener处理焦点事件,切换占位符文本和字体颜色即可。
内容的提问来源于stack exchange,提问作者Secret
相关产品推荐
相关产品推荐

