【问题标题】:How to Create a JTextfield text watermark (Not actual Text)如何创建 JTextfield 文本水印(不是实际文本)
【发布时间】:2018-03-01 20:49:46
【问题描述】:

JTextfield 为空时,如何获取水印?

我要做的就是让用户名和密码字段在各自的JTextFieldJPasswordField 中显示“用户名”和“密码”,而不是实际文本。我知道我需要一个事件监听器来查看它们是否为空。我不知道如何显示这些消息,就像上面在 Stack Overflow 上一样,它以灰色字母显示“搜索...”,并且只要有键盘输入就会消失。如果字符串再次为空,它应该会重新出现。

请提前谢谢您。

public class HelloPrompt extends JFrame {
    public static void main(String[] args){
        new HelloPrompt();
    }
    
    public HelloPrompt(){
        super("Login Page");
        JFrame frame = new JFrame("Login");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        JPanel p = new JPanel();
        JButton b = new JButton("Submit");
        JLabel user = new JLabel("username: ");
        JTextField userEnt = new JTextField("username", 20);
        JLabel pass = new JLabel("password: ");
        JTextField passEnt = new JPasswordField("password", 20);
    
        p.add(user);
        p.add(userEnt);
        p.add(pass);
        p.add(passEnt);

        add(p);
        setSize(299,299);
        setVisible(true);
        
        
    }
}

【问题讨论】:

  • 试试Text PromptIcon
  • 我正在通过链接添加“文本提示”,我可以导入文本提示吗?如果是这样,导入语句是什么?否则,我必须为 Text Prompt 创建一个构造函数,对吗?
  • @MarioPichardo, is text prompt something that I can import? - 它只是一个需要在类路径中的目录中找到的类。例如,您可以将它放在与 HelloPrompt 类相同的目录中。

标签: java swing user-interface awt


【解决方案1】:

我不确定您要做什么,但您可以使用

userEnt.setText("Enter username: ") passEnt.setText("Enter password: ")

将其前景色更改为较浅的颜色,例如GRAY 当用户单击文本字段时,清除文本字段的文本并将其前景重置为黑色。

为 Lost Focus 实现一个监听器。如果文本字段失去焦点并且文本字段的文本等于空,请将前景色重置为 GRAY 和 再次调用它

userEnt.setText("Enter username: ") passEnt.setText("Enter password: ")

【讨论】:

    猜你喜欢
    • 2013-04-25
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2012-05-07
    • 2011-09-15
    相关资源
    最近更新 更多