如何在 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");并让文本字段不请求关注启动! @RexEndozo but 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 11 中将 JavaFX 运行时添加到 Eclipse?

如何在 Java 中将日历转换为 java.sql.Date?

如何在 Java 中将 String 转换为 int?

如何在 Java 中将 String 转换为 int?

java 如何在Java中将String转换为int?

如何在java中将当前日期转换为字符串?