最近在学GUI编程,遇到了文本框的提示文字问题,想了一下,思路还是很简单的,话不多说,咱们直接开整!
实现效果:当该文本框失去焦点且无内容时,显示该提示文字。如果用户点击了该文本框(该文本框获取到了焦点),自动清除提示文字。以此达到提示效果。
首先先创建好一个JTextField的对象
JTextField text = new JTextField("提示文字",10);
然后我们就开始做该文本框的监听事件,这里主要是针对焦点(光标)来进行监听。
text.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent e) {
//得到焦点时,当前文本框的提示文字和创建该对象时的提示文字一样,说明用户正要键入内容
if (text.getText().equals("提示文字")){
text.setText(""); //将提示文字清空
text.setForeground(Color.black); //设置用户输入的字体颜色为黑色
}
public void focusLost(FocusEvent e) {
//失去焦点时,用户尚未在文本框内输入任何内容,所以依旧显示提示文字
if (text.getText().equals("")){
text.setForeground(Color.gray); //将提示文字设置为灰色
text.setText("提示文字"); //显示提示文字
}
}
}
看完思路以后可以结合上方的GIF动图来进行脑补,记得看下方注意事项!
注意:当我们创建了一个文本框之后,打开该文本框所在的界面,光标则会自动定位到文本框处(也就是说你打开该界面的一瞬间就让该文本框获取到了焦点),这样一来,我们为该文本框设置的提示文字就没有用了(因为我们设置了当文本框获取到焦点时清空文本框的操作)。解决此问题十分简单,我们可以主动的将焦点定位到文本框前的JLable标签上,设置方法 【标签名.requestFocus();】 这样就完美解决了这一问题。赶紧去试试吧!