如何使用ArrayList填充表单中的选项列表

时间:2017-10-25 14:52:01

标签: java arraylist

我需要在表单中填充一个选择组件,并在外部类(同一个包)中存在ArrayList

DatabaseList.java:     包pmi.sqltoxml;

import java.util.ArrayList;

public class DatabaseList {
    public void SetLista() {
        ArrayList<String> db = new ArrayList<>();
        db.add("ADB_PMISOFTWARE");
        db.add("ADB_DEMO");
    }
}

MainForm.java:

public class Mainform extends javax.swing.JFrame {
DatabaseList db = new DatabaseList();

public Mainform() {
    initComponents();
}

@SuppressWarnings("unchecked")
private void initComponents() {
    choice1 = new java.awt.Choice();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    choice1.setName("dbList"); // NOI18N
    for (String dbItem : db ){
        choice1.add(dbItem);
    }

    ...

Netbeans告诉我

  

for-each不适用于表达式类型。必填Array或   java.lang.iterable。找到:DatabaseList

但是,ArrayList不是iterable界面?

2 个答案:

答案 0 :(得分:2)

您必须返回列表:

public List<String> setLista() {
    List<String> db = new ArrayList<>();
    db.add("ADB_PMISOFTWARE");
    db.add("ADB_DEMO");
    return db;//<------You have to return the list otherwise you can't use this array list
}

然后你可以像这样调用你的方法:

for (String dbItem : db.setLista()){
        choice1.add(dbItem);
}

答案 1 :(得分:1)

db列出您班级的private成员,并在getDb()班级中添加一个获取者(DatabaseList),并对其进行迭代(for (String dbItem: db.getDb()) )。

或者只使用getList()方法返回List

public class DatabaseList {
    public void getLista() {
        ArrayList<String> db = new ArrayList<>();
        db.add("ADB_PMISOFTWARE");
        db.add("ADB_DEMO");
        return db;
    }
}

for (String dbItem : db.getLista()){
        choice1.add(dbItem);
}

您的自定义班级DatabaseList本身不是List / Iterable本身,而只是一个包装器,因此无法在enhanced for loop中使用。