如何创建JTextfield文本水印(非实际文本)

时间:2017-09-20 17:10:46

标签: java swing user-interface awt

如果JTextfield为空,我怎样才能在JTextfield内部放置水印。我一直在搜索youtube和Oracle的Java教程以及其他网站。

我已经找到了使用C#/ asp.net在线完成的方法,但显然这不是我想要做的。

我要做的就是获取用户名和密码,在各自的JTextField,JPasswordField中显示“username”和“password”,而不是实际的文本。我知道我需要一个事件监听器来查看它们是否为空。我不知道如何显示这些消息,就像上面的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);


    }
}

1 个答案:

答案 0 :(得分:0)

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

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

将其前景颜色更改为更轻的GRAY 当用户点击文本字段时,清除文本字段的文本并将其foregroud重置为黑色。

为Lost Focus实现一个监听器。如果文本字段失去焦点且文本字段的文本等于空,则将前景色重置为GRAY并且 再次打电话给

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