2015-12-03 5 views
1

У меня есть ArrayList, который содержит данные о записи сотрудника из данных, введенных в JTextFields. Я показал это с полем showMessageDialog, чтобы убедиться, что они правильно добавлены в список.Итерация через список массивов в Java

Сотрудники создаются и добавляются в список правильно, но как я могу циклически перебирать одну запись за один раз за один раз и отображать информацию в JTextFields?

Отредактировано как показано ниже:

Я не думаю, что я задал этот вопрос правильно. У меня есть кнопка, которая позволяет мне отображать содержимое первого элемента моего списка массивов в графическом интерфейсе. Смотрите ниже:

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()); }

+0

HTTP : //docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html – Holger

+0

можно отправить какой-нибудь код? –

+0

Возможный дубликат [* GUI в java «перейти к предыдущей/следующей» опции *] (http://stackoverflow.com/q/20112159/230513). – trashgod

ответ

2

Есть разные варианты, но, тем не менее, вам придется привязать свою запись сотрудника к 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.

Обновление на основе обновления Вопрос

Я надеюсь, теперь я понимаю, что вы просите, но если это так, я бы просто сделать это:

Магазин индекс «Текущий» показанный элемент в переменном или скрытом графическом интерфейсе.

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; 
+0

. Я очень ценю ваш ответ, но я думаю, что по сложному вопросу. Я отредактировал свой вопрос и включил исходный код. – JavaNewbie

+0

@JavaNewbie Я обновил ответ, это то, что вы ищете? –

+0

Отлично, спасибо Рикардо. Это действительно помогло. Он даже возвращается к первой записи после финальной записи. Я использовал тот же код для предыдущей кнопки, но использовал 'currentIndex-1'. Это работает, пока вы не дойдете до первой записи. Затем он ломается, когда вы пытаетесь перейти к предыдущей записи. Что мне не хватает? – JavaNewbie

0

Использование for петля:

for(JTextField a : your_list){ 
    do_something(); 
} 
Смежные вопросы