2015-12-03 65 views
1

我有一個ArrayList,它保存從輸入到JTextFields的數據中獲得的員工記錄詳細信息。我已經用showMessageDialog框顯示了這一點,以確認它們已被正確添加到列表中。在Java中使用數組列表進行迭代

員工創建並正確添加到列表中,但是如何一次循環查看一條記錄,並在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()); }

+0

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

+0

可以發表一些代碼嗎? –

+0

[*在java中的GUI轉到上一個/下一個選項*](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)); 

當你遍歷這個通過列表轉換爲地圖和地圖EmployeeRecords他們的JTextField

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

另一種選擇,或許更簡單,就是:列表中,您可以將您選擇的數據。

更新基於問題的更新

我希望我現在明白你問什麼,但如果是這樣,我只是這樣做:

Store的「當前」指數在可變或隱藏的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; 
+0

我非常感謝您的回覆,但我認爲我過於複雜的問題。我編輯了我的問題幷包含源代碼。 – JavaNewbie

+0

@JavaNewbie我更新了答案,這是你在找什麼? –

+0

完美,謝謝里卡多。這真的有幫助。它甚至可以追溯到最終記錄之後的第一個記錄。我爲前一個按鈕使用了相同的代碼,但使用了'currentIndex-1'。這將工作,直到你到達第一個記錄。當你嘗試去前一個記錄時,它會崩潰。我錯過了什麼? – JavaNewbie

0

使用for循環:

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