繁体   English   中英

遍历Java中的数组列表

[英]Iterating through array list in Java

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

正确创建了员工并将其添加到列表中,但是如何一次遍历ArrayList一条记录并将信息显示在JTextFields呢?

编辑如下:

我认为我提出的问题不正确。 我有一个按钮,可让我在GUI上显示数组列表的第一个元素的内容。 见下文:

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

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

我有一个尝试使用的列表迭代器,但是我根本无法使其工作。

我已经尝试过了,但是导致最后一个元素被显示:

for (int i = 0; i < nameList.size(); i++) {

nameList.get(i);

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

有不同的选项,但简短的是,您必须以某种方式将员工记录绑定到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));

遍历此列表时,可以传输您选择的数据:

for (EmployeeRecordToJTextfield e : list) {
  JTextField textField = e.getJTextField();
  EmployeeRecord record = e.getEmployeeRecord();
  textField.setText(record.getName());
}

另一个选择(可能更简单)是将列表转换为地图,并将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;

现在,您可以使用nextIndex从列表中获取正确的条目:

nField.setText(nameList.get(nextIndex).getName());
bField.setText(nameList.get(nextIndex).getBirth()); 
jfield.setText(nameList.get(nextIndex).getID());

并且不要忘记更新currentIndex:

this.currentIndex = nextIndex;

for循环:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM