如何在 Java 中将 actionlistener 添加到文本字段
Posted
技术标签:
【中文标题】如何在 Java 中将 actionlistener 添加到文本字段【英文标题】:How to add actionlistener to textfield in Java 【发布时间】:2014-11-16 05:54:43 【问题描述】:这就是概念:简单地说,有一个以“名称”为值的文本框,我希望如果我单击文本框中的任意位置,值“名称”将消失。这就是我在代码中所做的:
JTextField t1 = new JTextField("Name", 10);
t1.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent cl)
t1.setText(" ");
);
没有语法错误,但是当我运行程序并单击文本框中的某处时,没有任何反应,并且值“名称”仍然存在
任何帮助将不胜感激,谢谢!
【问题讨论】:
这甚至不应该编译。t1
应该是 final
才能在内部类中访问。
我不小心排除了final,对此感到抱歉。但在我的程序中,它是: final JTextField t1 = new JTextField("Name", 10);
1)ActionListener
在您按下ENTER
键后调用JTextField
2) 在 1.8 中,它可以在没有final
的情况下声明。你想达到什么目标?
【参考方案1】:
您不应该为此目的使用 ActionListener。而不是 FocusListener 应该为你工作,在这里解释:http://www.java2s.com/Code/JavaAPI/javax.swing/JTextFieldaddFocusListenerFocusListenerl.htm
【讨论】:
我试过这个 't1.addFocusListener(new FocusListener() public void focusGained(FocusEvent e) t1.setText(""); public void focusLost(FocusEvent e) );'但是当我运行程序时,值“Name”根本没有出现 尝试使用其他方法如下: public void focusLos(FocusEvent e) t1.setText("Name");并让文本字段不请求关注启动! @RexEndozobut when I run the program, the value "Name" doesn't appear at all
,似乎是因为您的JTextField
在开始时获得焦点。【参考方案2】:
不要使用 ActionListener,它没有实现满足您需求的类。您还可以通过以下方式添加 MouseListener:
t1.addMouseListener(new MouseListener()...);
http://docs.oracle.com/javase/7/docs/api/java/awt/event/MouseListener.html
【讨论】:
【参考方案3】:你可以试试这个:
t1.addFocusListener(new FocusListener()
@Override
public void focusGained(FocusEvent e)
t1.setText(null); // Empty the text field when it receives focus
);
【讨论】:
谢谢!这对我有用,我只是添加了 focusLost 事件以再次为 t1 赋予值“Name”,这很酷。 问题,'@Override' 的目的是什么?我删除了它,程序运行得很好 @Override 注解在 Java 中是可选的,但很有帮助。它定义我们正在使用新方法或覆盖现有方法。您可以阅读 Java 的 Method Overriding 主题以获得清晰的概念。谢谢 @RexEndozo:见Overriding and Hiding Methods。 当我输入一个值然后失去焦点时,文本框再次将该值设置为“名称”,这很糟糕。如何使焦点获得 t1.setText(null);只触发一次(程序启动时)?以上是关于如何在 Java 中将 actionlistener 添加到文本字段的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Java AWT actionListener 为局部变量赋值
如何在 ActionListener 中创建类似 lambda 的模式
如何在使用ActionListener按钮和GUI时向数组列表中添加项目?
线程“主”java.lang.***Error actionListeners 中的异常