【问题标题】:Getting Changed Text from DocumentListener从 DocumentListener 获取更改的文本
【发布时间】:2017-11-25 13:33:33
【问题描述】:

我认为这很容易,因为我显然不了解 DocumentListeners。我创建了一个 JFormattedTextField 扩展来包含一个侦听器,以便我可以使用更改的字段文本更新哈希映射。

package stokerMonitor;

import java.util.HashMap;

import javax.swing.JFormattedTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

public class TimeLineTextClass extends JFormattedTextField {

/**
 * 
 */
private static final long serialVersionUID = 1L;

private HashMap<Integer,Object> fieldList;
private int field;

public TimeLineTextClass (Object tlformat_,HashMap<Integer,Object> fieldList_,int field_) {
    super(tlformat_);
    fieldList=fieldList_;
    field=field_;
    getDocument().addDocumentListener(new DocumentListener() {

        @Override
        public void changedUpdate(DocumentEvent e) {
            // Ignore - Using plain document

        }

        @Override
        public void insertUpdate(DocumentEvent e) {
            fieldList.put(field,????);
        }

        @Override
        public void removeUpdate(DocumentEvent e) {
            fieldList.put(field,????);
        }

    });
}

}

阅读文档后,我无法弄清楚如何在事件处理程序中获取更改的文本。似乎没有 getText 方法。我用什么'????'? TIA。

【问题讨论】:

    标签: java jformattedtextfield documentlistener


    【解决方案1】:

    由于TimeLineTextClass 扩展JFormattedField,你会发现实际上有一个getText() 方法。

        @Override
        public void insertUpdate(DocumentEvent e) {
            fieldList.put(field,getText());
        }
    
        @Override
        public void removeUpdate(DocumentEvent e) {
            fieldList.put(field,getText());
        }
    

    上面的代码应该可以正常工作。

    【讨论】:

    • 啊!我一直在尝试使用“this.getText()”或“e.something.getText()”。谢谢。
    • 不起作用的原因是因为当您创建新的对象侦听器时,this 然后引用了DocumentListener 而不是TimeLineText 类,因为范围。跨度>
    猜你喜欢
    • 2013-01-21
    • 2018-12-21
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 2014-06-17
    相关资源
    最近更新 更多