【发布时间】:2015-10-26 21:19:53
【问题描述】:
我在 JFrame 中垂直显示了 2 个列表。假设列表 A 是 ArrayList<CustomTexField>,列表 B 是 ArrayList<JLabel>。
我想用 CustomTextField 中的值“更新”列表 B 中与列表 A 中相同元素索引匹配的元素。
我试过添加文档监听器,但不知道如何计算索引。
@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()“读取”它
编辑:更新的标题
【问题讨论】:
-
如果您只是询问如何获取 ArrayList 中某个项目的索引,您可以使用
arrayList.indexOf(itemYouWant) -
那么你想从列表 B 中获取与正在插入/更新的元素相对应的元素吗?
-
-是的@Thomas。
indexOf不起作用,因为我不知道itemIWant是什么。取决于编辑哪个txtfield -
我做不到
listB().inexOf(e.getDocument());。我想做类似的事情,从文档中转换给我错误:( -
我猜您无论如何都将侦听器添加到每个文本字段的文档中,因此您只需为该侦听器提供对相应标签的引用并相应地更新它。维护 2 个单独的列表并通过索引连接并不是那么健壮(如果只有一个列表更改为某些编程错误等怎么办?)。
标签: java arraylist indexing jtextfield documentlistener