gpt4 book ai didi

java - 在 JTextComponent java 中输入时触发事件

转载 作者:行者123 更新时间:2023-12-01 11:51:54 25 4
gpt4 key购买 nike

我有一个 Settings 类,它应该提供用于检索设置并将其保存到文件中的接口(interface)。每当我更改输入值(而不是单击“保存”按钮后)时,我的设置都应该更新。这就是为什么我将此方法添加到 Settings 类中:

  /** Automatically update setting value as user types.
* @param setting_name What is the name of associated setting?
* @param input JTextComponent (like JTextField) to listen on for events
*/
public void listenOnInput(final String setting_name, final JTextComponent input) {
//Debug output
System.out.println("Settings[\""+setting_name+"\"] automatically updates on input change.");
input.addInputMethodListener(new InputMethodListener() {
@Override
public void inputMethodTextChanged(InputMethodEvent event) {
//Set setting to current value
setSetting(setting_name, input.getText());
}
//This method is dummy, I see no use for it
@Override
public void caretPositionChanged(InputMethodEvent event) {}
});
}

这可能不是完美的设计,但我的应用程序永远不会有复杂的设置,因此我不会在这项任务上投入太多精力。我这样使用它:

    JTextField name = new JTextField();
Settings settings = new Settings();
name.setToolTipText("Enter your name");
contentPane.add(name);
settings.listenOnInput("user_name", name);

我的问题是上面的代码不起作用 - 我可以键入或按 Enter,但永远不会调用 inputMethodTextChanged

那么获取更新值的正确方法是什么?

最佳答案

JTextField 的文档上使用 DocumentListener:

textField.getDocument().addDocumentListener(...);

然后您可以使用它来检测文本中的任何更改。

关于java - 在 JTextComponent java 中输入时触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28739469/

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