【问题标题】:Is there an "onChange" for Java? [closed]Java有“onChange”吗? [关闭]
【发布时间】:2014-06-03 14:54:34
【问题描述】:

我对 Java 编程比较陌生,我编写了一些放置 JLabel 的代码,文本设置为“Enter text here”在 JTextField 后面。 (类似于 Microsoft 登录页面的功能)我想知道当用户开始在文本字段中输入时是否有删除 JLabel 文本的方法。 (或者如果这样的事件处理程序甚至存在。)

任何帮助将不胜感激。

【问题讨论】:

标签: java swing actionlistener


【解决方案1】:

对于由 Document 支持的某些特定字段,您可以有一个文档更改侦听器,如下所示:

Value Change Listener to JTextField

【讨论】:

    【解决方案2】:

    没有通用的onChange 函数。但是,您可以在implements KeyListener 的类中定义一个方法,即public void keyPress。您可以使用如下方式:

    public class MyClass implements KeyListener {
    
        private JTextField myField;
        private JLabel myLabel;
    
        public MyClass() {
            myLabel = new JLabel("Enter text here");
            myField = new JTextField();
            myField.addKeyListener(this);
        }
    
        @Override
        public void keyPress(KeyEvent e) {
            myLabel.setText("");
        }
    }
    

    当然,您可以添加更多的灵活性,但以上是总体思路。例如,您可以确保KeyEvent 来自适当的来源,您应该这样做:

    @Override
    public void keyPress(KeyEvent e) {
        if(e.getSource() == myField) {
            myLabel.setText(""):
        }
    }
    

    ...还有很多其他的东西。看看Oracle's Event Listener tutorials

    【讨论】:

    • 这行不通。首先,addActionListener(this) 要求你的类实现ActionListener,而不是KeyListener。其次,你最好为这个问题实现FocusListener
    • @NathanielJones 你说得对,应该是addKeyListener。我的错误,在工作中输入这个,哈哈。而且您对FocusListener 的看法是错误的,因为OP 明确表示I would like to know if there is a way to set the text to "" when the user starts typing in the text field。 W
    猜你喜欢
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2013-03-05
    相关资源
    最近更新 更多