You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:15:02