让ActionListener监听JTextField中的更改而不是仅输入?

因此,您可能知道,如果您有一个文本字段并且向其添加了ActionListener,它将只收听Enter按钮的按键。 但是,我想让我的ActionListener监听文本中的更改。 所以基本上我有这个:

public static JPanel mainPanel() { JPanel mainp = new JPanel(); JTextArea areap = new JTextArea("Some text in the textarea"); JTextField fieldp = new JTextField("Edit this"); areap.setEditable(false); fieldp.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(//change in textfield, for instance a letterpress or space bar) { //Do this } } }); mainp.add(areap); mainp.add(fieldp); return mainp; } 

我可以通过任何方式收听文本中的更改(如actionPerformed事件中记录的那样)?

来自@JRL的回答


使用基础文档:

 myTextField.getDocument().addDocumentListener(); 

是的,但什么是文档监听器,你如何使用它? 你并没有真正回答这个问题。

我的应用程序的用户界面中有一个JTextField。 当用户对其进行任何更改时,我希望检查附近的JCheckBox。 目的是告诉应用程序使用输入的值。 用户经常在那里输入值,但如果他们没有明确告诉应用程序使用它,那么应用程序会继续忽略它。 我不应该“训练”用户,而应该遵循最不惊讶的原则并自动检查“使用此值”框。

但我该如何倾听变化呢? 难道你们不能告诉我简单的方法,而不是“教育我”文件听众吗?

文档是java swing用于在JTextField内部存储文本的机制。 DocumentListeners是实现DocumentListener接口的对象,因此您可以列出文档中的更改,即JTextField文本的更改。

要使用document和documentlistenerfunction,如上所述扩展您的类(可能但不一定是JFrame),以便它实现DocumentListener接口。 实现接口的所有方法(很可能你的java ide可以半自动地为你做.FYI,DocumentListener接口有三个方法,一个用于插入字符(在文本字段中),一个用于删除字符,一个用于更改属性。当添加字符(第一个)或删除(第二个)时,您将要实现前两个。要获取更改的文本,您可以向文档询问文本,或者更简单地调用myTextField.getText()。

C’est兜售!

菲尔特洛伊