有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JPasswordField上的java设置占位符

我正在用Java(使用NetBeans)开发一个系统,为了让它更“专业”,我添加了一些很酷的功能,比如占位符(是的,我知道,它来自HTML)

对于我拥有的所有JTextFields,我使用了以下代码来生成它们的占位符(本例中JTextField的名称是“tfUser”):

private void tfUserFocusGained(java.awt.event.FocusEvent evt) {
    if (tfUser.getText().equals("Your User Name...")) {
        tfUser.setText("");
        tfUser.setForeground(Color.BLACK);
    }
}

private void tfUserFocusLost(java.awt.event.FocusEvent evt) {                                    
    if (tfUser.getText().equals("")) {
        tfUser.setText("Your User Name...");
        tfUser.setForeground(Color.GRAY);
    }
}

这是一场“焦点比赛”: 文本字段最初包含文本“您的用户名…”,前景为“灰色”。每次此文本字段获得焦点时,它都会验证其文本:如果文本为。等于(“您的用户名…”),其文本设置为“”(空字符串),前景设置为黑色(默认)。另一方面,如果文本。等于(“其他任何东西……”),这意味着用户可能已经插入了用户名,因此,不要使用此代码执行任何操作

每次文本字段失去焦点时,它都会验证其文本:如果文本丢失。等于(“”)(再次为空字符串),其文本设置回“您的用户名…”前景设置为灰色。再说一次,如果是文本。等于(“其他任何东西……”),这意味着用户可能已经插入了用户名,因此,不要使用此代码执行任何操作

这段代码与JTextFields配合得很好,但是当我与JPasswordFields配合使用时,我得到了以下结果:

****************  

(应该是“你的密码…”)

有人能帮我在这个JPassword字段中添加一个占位符吗?提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    我对我的登录代码所做的是添加一个“显示密码”的复选框,并在jframe中添加了以下语句:

    //Setting checkbox selected to true so the word "password" is seen when program runs
     passCheckBox.setSelected(true);
        if(passCheckBox.isSelected())
        {
            PasswordField.setEchoChar((char)0);
        }`
    

    密码复选框的代码:

    if(passCheckBox.isSelected())
            {
                PasswordField.setEchoChar((char)0);
            }else{
                
                PasswordField.setEchoChar('*');
            }
    

    密码字段焦点代码:

    private void PasswordFieldFocusGained(java.awt.event.FocusEvent evt) {                                          
        passCheckBox.setSelected(false);
        PasswordField.setEchoChar('*');
        String password = String.valueOf(PasswordField.getPassword());
        
        if(password.toLowerCase().equals("password"))
        {
            PasswordField.setText("");
            PasswordField.setForeground(Color.black);
        }
        
    }     
    
     
    

    密码字段焦点的代码丢失:

    private void PasswordFieldFocusLost(java.awt.event.FocusEvent evt) {                                        
         
        String password = String.valueOf(PasswordField.getPassword());
        
        
        if(password.toLowerCase().equals("password") || password.toLowerCase().equals("") )
        {
            PasswordField.setText("Password");
            PasswordField.setEchoChar((char)0);
            PasswordField.setForeground(new Color(153, 153, 153));
        }
    }                
    

    我自己做了一半,并从视频中提取了一些片段,希望这能有所帮助:>