我想在java swing 里实现 在文本框和密码框加入提示信息。。。

提示信息点击后消失、、、????求大神!!!!如果点击其他地方判断里面是否为空是的话恢复提示信息。不是的话不恢复、、如下图所示... 提示信息点击后消失、、、???? 求大神!!!!
如果点击其他地方判断里面是否为空 是的话恢复提示信息。
不是的话不恢复、、
如下图所示
展开
 我来答
yugi111
推荐于2017-09-07 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
package test;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Hint extends JFrame implements MouseListener
{
private static final long serialVersionUID = 1L;
private static final String TIP = "QQ号码/手机/邮箱";

public Hint ()
{
setTitle ("test");
setLayout (new BorderLayout ());
final JTextField tf = new JTextField (TIP);
tf.setName ("tf");
tf.setForeground (Color.gray);
tf.setLocation (0, 0);
tf.setSize (100, 30);
tf.addMouseListener (this);
JPanel panel = new JPanel ();
panel.setName ("panel");
panel.addMouseListener (this);
panel.setLayout (null);
panel.add (tf);
panel.setFocusable (true);
add (panel);
setSize (150, 60);
setLocationRelativeTo (null);
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setVisible (true);
}

public static void main ( String[] args )
{
new Hint ();
}

@Override
public void mouseClicked ( MouseEvent e )
{
Component component = e.getComponent ();
String name = component.getName ();
if (e.getButton () == MouseEvent.BUTTON1)
{
if ("tf".equals (name))
{
JTextField tf = (JTextField) component;
if (TIP.equals (tf.getText ()))
{
tf.setText ("");
}
}
else if ("panel".equals (name))
{
JTextField tf = (JTextField) ( (JPanel) component ).getComponents ()[0];
if ("".equals (tf.getText ()))
{
tf.setText (TIP);
}
}
}
}

@Override
public void mousePressed ( MouseEvent e )
{}

@Override
public void mouseReleased ( MouseEvent e )
{}

@Override
public void mouseEntered ( MouseEvent e )
{}

@Override
public void mouseExited ( MouseEvent e )
{}
}
更多追问追答
追问
大哥,你这个方法可以。。不过 mouseClicked这个方法有点看不懂- -
有木有简单的方法。。
追答
木有了啊,我就知道这样写啊
gerministar
2014-11-07 · TA获得超过166个赞
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:107万
展开全部

给文本框添加焦点事件,失去焦点是判断一下是否为空,如果为空恢复成提示信息

JTextField textField = new JTextField("密码");
textField.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
if (textField.getText().isEmpty()){
textField.setText("密码");
}
}
});
追问
这个如果是获取交点的情况下,需要删除里面的内容。。
会减少用户体验。。
而且我说的是密码框。。你上面写的是文本框。。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
生活he家
2014-11-07 · 一个属于大家的搬运工
生活he家
采纳数:1536 获赞数:6828

向TA提问 私信TA
展开全部
new JTextField("指定文本内容");
new的时候直接传值进去就行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhenf6
2014-11-07 · 超过28用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:45.8万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-02-27
展开全部
使用接口FocusListener
获得焦点时设置文本为空,失去焦点时设置文本为“QQ号码/手机/邮箱”
另外,你可以给窗体添加一个空白文本框(不设置大小和位置),这样它会默认获得焦点,可以避免在窗体显示时提示信息为空的情况。
希望能帮到你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式