从 DocumentListener 获取更改的文本
Posted
技术标签:
【中文标题】从 DocumentListener 获取更改的文本【英文标题】:Getting Changed Text from 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。
【问题讨论】:
【参考方案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
类,因为范围。跨度>
以上是关于从 DocumentListener 获取更改的文本的主要内容,如果未能解决你的问题,请参考以下文章
Swing JTextField 文本更改侦听器 DocumentListener 无限循环