gpt4 book ai didi

java - 如何使用 documentListener 获取对象的索引?

转载 作者:行者123 更新时间:2023-12-01 11:16:04 24 4
gpt4 key购买 nike

我在 JFrame 中垂直显示 2 个列表。假设列表 A 是 ArrayList<CustomTexField>列表 B 是 ArrayList<JLabel> .

我想“更新”列表 B 中与列表 A 中元素的相同索引与 CustomTextField 中的值相匹配的元素。 .

我尝试添加文档监听器,但不知道如何计算索引。

@Override
public void insertUpdate(DocumentEvent e) {
try {

listB().get(INDEX).setText(e.getDocument().getText(0, e.getDocument().getLength()) + "");

} catch (BadLocationException e1) {
e1.printStackTrace();
}

}

我还在 CustomTexField 中创建了一个方法创建索引时保存索引但不知道如何从 e.getDocument() 中“读取”它的类

编辑:更新标题

最佳答案

如果您只是想获取数组列表中某个项目的索引,则可以使用 indexOf 方法。

int indexOfItem = arrayList.indexOf(itemIWant)

这就是我解释你的问题的方式,但我希望得到澄清。

编辑:如果您尝试将对象附加到 DocumentListener,您可以查看这个问题:how to find source component that generated a DocumentEvent

基本上,如果每个 CustomTextField 都有一个 DocumentListener,则可以使用链接中描述的 putProperty 方法将其自身附加到它。从那里,您可以使用 getProperty(item) 来查找该项目。如果您愿意,您可以对索引执行类似的操作,但我相信由于您在 CustomTextField 的定义中有一个索引字段,因此只需将 CustomTextField 与 DocumentListener 附加就足够了。

//sometime on initalization of the lists
for(CustomTextField field: listA):
field.getDocument().putProperty("owner", field);

...

@Override
public void insertUpdate(DocumentEvent e) {
try {
CustomTextField field = e.getDocument().getProperty("owner");
int index = field.getIndex(); //assuming you have a getter method
listB().get(index).setText(listA.get(index).getText());

} catch (BadLocationException e1) {
e1.printStackTrace();
}

}

关于java - 如何使用 documentListener 获取对象的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31809801/

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