1

每当用户点击不同的组件时,我需要监听器触发,而不仅仅是在按下回车键时。我还需要识别源,因为我有数百个 JTextField,而我必须识别它们的唯一方法是通过数组索引。

我可以从 ActionListener 获取源,但 ActionListener 仅在用户按下回车键时触发。

我可以将 DocumentListener 附加到 JTextField 的关联文档,但似乎没有办法获取对 JTextField 本身的引用。

我怎样才能做到这一点?

4

2 回答 2

1

我有数百个 JTextField,我必须识别它们的唯一方法是通过数组索引。

使用JTable而不是数百个JTextField's

我可以从 ActionListener 获取源,但 ActionListener 仅在用户按下回车键时触发。

ActionListener仅在ENTER key被按下时触发,并且JTextFieldforJFormattedTextFieldJPasswordField

可以将 DocumentListener 附加到 JTextField 的关联文档,但似乎没有办法获取对 JTextField 本身的引用。

从你们每个人Listeners都可以确定哪个从JComponents触发此事件

于 2012-12-29T00:47:14.750 回答
1

在 Oracle 对How to Write a Document Listener的解释中,您似乎可以在 Document 上放置一个或多个属性。

这是解释中的两行代码。

textField.getDocument().addDocumentListener(new MyDocumentListener());
textField.getDocument().putProperty("name", "Text Field");

好吧,您可以将第二行更改为以下内容:

textField.getDocument().putProperty("index", Integer.toString(index));

稍后在 Document Listener 代码中,您将使用此方法来获取属性。

document.getProperty("index");
于 2012-12-29T00:47:55.873 回答