gpt4 book ai didi

java - 如何区分 textField.setText() 和在 java 中手动向 textField 添加文本?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:18 24 4
gpt4 key购买 nike

我的应用程序中有一个 textField,当用户单击 JList 中的项目时,它将以编程方式启动 (textField.setText())。稍后用户将手动更改此值。我坚持使用文档监听器来检测此文本字段中的更改。当以编程方式发生更改时,它不得执行任何操作,但如果手动发生更改,它应该将背景更改为红色。

如何检测textField是手动填写还是通过textField.setText()填写?

txtMode.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent e) {
if (!mode.equals(e.getDocument()))
txtMode.setBackground(Color.red);
}

public void removeUpdate(DocumentEvent e) {
if (mode.equals(e.getDocument()))
txtMode.setBackground(Color.white);
}

public void changedUpdate(DocumentEvent e) {
//To change body of implemented methods
}
});

最佳答案

有两种方法

  • setText("...") 之前删除 DocumentListener 如果完成则添加 DocumentListener

代码

public void attachDocumentListener(JComponent compo){
compo.addDocumentListener(someDocumentListener);
}

//similair void for remove....
  • 使用 boolean 值来禁用“如果需要”,但您必须更改 DocumentListener 的内容

例如

 txtMode.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent e) {
if (!mode.equals(e.getDocument()))

if (!updateFromModel){
txtMode.setBackground(Color.red);
}
}

public void removeUpdate(DocumentEvent e) {
if (mode.equals(e.getDocument()))

if (!updateFromModel){
txtMode.setBackground(Color.white);
}
}

public void changedUpdate(DocumentEvent e) {
//To change body of implemented methods
}
});

关于java - 如何区分 textField.setText() 和在 java 中手动向 textField 添加文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11120030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com