首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PlaceHolder上设置JPasswordField

在PlaceHolder上设置JPasswordField
EN

Stack Overflow用户
提问于 2017-07-23 20:19:14
回答 2查看 1.9K关注 0票数 2

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

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

代码语言:javascript
复制
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);
    }
}

这是一个“焦点匹配”:文本字段最初有文本“您的用户名.”,具有“灰色”前景。每当这个文本字段获得焦点时,它都会验证它的文本:如果text.equals(“您的用户名.”),它的文本被设置为"“(一个空字符串),前台设置为黑色(默认)。另一方面,如果text.equals(“任何其他的.”),这意味着用户可能已经插入用户名,所以,不要对此代码做任何事情。

每次文本字段失去焦点时,它都会验证其文本:如果text.equals("") (又是一个空字符串)将其文本设置为“您的用户名.”前景被设置为灰色。同样,如果text.equals(“任何其他的.”),这意味着用户可能已经插入了用户名,因此,不要对此代码做任何事情。

这段代码在JTextFields 但是中运行得很好,当我对JTextFields做同样的操作时,我得到以下结果:

代码语言:javascript
复制
****************  

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

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

EN

回答 2

Stack Overflow用户

发布于 2021-04-22 14:59:50

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

代码语言:javascript
复制
//Setting checkbox selected to true so the word "password" is seen when program runs
 passCheckBox.setSelected(true);
    if(passCheckBox.isSelected())
    {
        PasswordField.setEchoChar((char)0);
    }`

密码代码复选框:

代码语言:javascript
复制
if(passCheckBox.isSelected())
        {
            PasswordField.setEchoChar((char)0);
        }else{
            
            PasswordField.setEchoChar('*');
        }

获得密码字段焦点代码:

代码语言:javascript
复制
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);
    }
    
}     

密码字段焦点丢失代码:

代码语言:javascript
复制
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));
    }
}                

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

票数 2
EN

Stack Overflow用户

发布于 2022-05-05 04:15:33

下面是我获取占位符的方法

代码语言:javascript
复制
private void getPlaceholders(JTextField text) {

        String temp = text.getText();

        text.addFocusListener(new FocusListener() {
            @Override
            public void focusGained(FocusEvent e) {
                text.setText("");
                text.setForeground(Color.BLACK);

            }

            @Override
            public void focusLost(FocusEvent e) {
                if (text.getText().isEmpty()) {
                    text.setForeground(Color.GRAY);
                    text.setText(temp);
                }

            }
        });
    }

下面是我实现它的方法。

代码语言:javascript
复制
//      Password Field
        passwordField = new JPasswordField();
        passwordField.setBounds(48, 340, 288, 32);
        roundedPanel.add(passwordField);
        passwordField.setText("Password");
        passwordField.setEchoChar((char) 0);
        getPlaceholders(passwordField);

允许您在passwordFields中看到占位符的是

passwordField.setEchoChar((char) 0);

您可以将其取出用于常规文本字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45269543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档