java如何创建JTextfield文本水印(非实际文本)
当JTextfield
为空时,如何获得放置在其内部的水印
我所要做的就是让username和password字段在各自的JTextField
和JPasswordField
中显示“username”和“password”,而不是实际文本。我知道我需要一个事件侦听器来查看它们是否为空。我不知道如何显示这些消息,就像上面的堆栈溢出一样,上面写着“搜索…”以灰显字母显示,并在键盘输入时消失。如果字符串再次为空,则应重新显示
请提前告诉我并谢谢你
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 楼答案
我不确定你想做什么,但你可以使用
userEnt.setText("Enter username: ")
passEnt.setText("Enter password: ")
将其前景色更改为较浅的颜色,如
GRAY
当用户单击文本字段时,清除文本字段的文本并将其foreground重置为黑色实现一个监听程序,以防失去焦点。如果文本字段失去焦点且文本字段的文本等于零,请将前景色重置为
GRAY
,然后 再说一遍userEnt.setText("Enter username: ")
passEnt.setText("Enter password: ")