Java中数组列表的迭代

Java中数组列表的迭代,java,swing,user-interface,arraylist,iteration,Java,Swing,User Interface,Arraylist,Iteration,我有一个ArrayList,它保存输入JTextFields的数据中的员工记录详细信息。我已通过一个showmessage对话框显示了这一点,以确认它们已正确添加到列表中 员工已正确创建并添加到列表中,但如何在ArrayList中一次循环一条记录,并在JTextFields中显示信息 编辑如下: 我想我问得不恰当。我有一个按钮,使我能够向GUI显示数组列表的第一个元素的内容。见下文: nField.setText(nameList.get(0.getName()) bField.setText(

我有一个
ArrayList
,它保存输入
JTextFields
的数据中的员工记录详细信息。我已通过一个
showmessage对话框
显示了这一点,以确认它们已正确添加到列表中

员工已正确创建并添加到列表中,但如何在
ArrayList
中一次循环一条记录,并在
JTextFields
中显示信息

编辑如下:

我想我问得不恰当。我有一个按钮,使我能够向GUI显示数组列表的第一个元素的内容。见下文:

nField.setText(nameList.get(0.getName())
bField.setText(nameList.get(0.getBirth())
jField.setText(nameList.get(0.getID())

我需要的是显示下一个元素的东西

我有一个列表迭代器,我正在尝试使用,但我就是不能让它工作

我尝试过这个,但结果显示了最后一个元素:

for(inti=0;i

姓名列表。获取(i);

nField.setText(nameList.get(i).getName());
bField.setText(nameList.get(i.getBirth());

jfield.setText(nameList.get(i).getID());}
使用
进行循环:

for(JTextField a : your_list){
    do_something();
}

有不同的选择,但缺点是,您必须以某种方式将员工记录绑定到JTextField。一种方法是创建一个简单的对象来保存关系:

public class EmployeeRecordToJTextfield {
  private EmployeeRecord employeeRecord;
  private JTextField jTextField;

  public EmployeeRecordToJTextfield(EmployeeRecord employeeRecord, JTextField jTextField) {
    this.employeeRecord = employeeRecord;
    this.jTextField = jTextField;
  }

  public EmployeeRecord getEmployeeRecord() {
    return employeeRecord;
  }

  public JTextField getJTextField() {
    return jTextField;
  }
}
您可以在列表中粘贴此类的实例,而不是
EmployeeRecord

List<EmployeeRecordToJTextfield> list = new ArrayList<>();
list.add(new EmployeeRecordToJTextfield(employeeRecord, jTextField));
另一种可能更简单的方法是将列表转换为地图,并将EmployeeRecords映射到其JTextField

根据问题更新进行更新

我希望我现在能理解你的要求,但如果是这样,我就这么做:

将“当前”显示项的索引存储在变量或隐藏的GUI字段中

private int currentIndex = 0; // Start with the first item.
当您想要显示下一个项目时(可能通过下一个或上一个按钮),请获取下一个值。补偿列表长度:

int nextIndex = currentIndex+1;
if (nextIndex >= nameList.size()) nextIndex = 0;
if (nextIndex < 0) nextIndex = nameList.size()-1;
别忘了更新currentIndex:

this.currentIndex = nextIndex;

你能发布一些代码吗?可能与发布的代码和编辑的问题重复@垃圾神-看起来很相似,但我无法从这个问题的答案中解决我的问题。我非常感谢你的回答,但我认为我把问题复杂化了。我已经编辑了我的问题并包含了源代码。@JavaNewbie我更新了答案,这就是你要找的吗?太好了,谢谢Ricardo。这真的很有帮助。它甚至可以追溯到最终记录之后的第一个记录。我对上一个按钮使用了相同的代码,但使用了
currentIndex-1
。直到你找到第一张唱片为止。然后,当您尝试转到上一个记录时,它会崩溃。我遗漏了什么?@JavaNewbie当你在第一个元素上时,你必须添加一行内容:
if(nextIndex<0)nextIndex=nameList.size()-1非常感谢您。已经为此奋斗了一段时间,最终可以转到其他方面。你是该网站的荣誉。
nField.setText(nameList.get(nextIndex).getName());
bField.setText(nameList.get(nextIndex).getBirth()); 
jfield.setText(nameList.get(nextIndex).getID());
this.currentIndex = nextIndex;