繁体   English   中英

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

[英]How to use ArrayList to populate choice list in a form

我需要填充的形式的选择组分与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不适用于表达式类型。 必需Arrayjava.lang.iterable 找到: DatabaseList

但是, ArrayList不是iterable接口吗?

您必须返回列表:

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

db List设为类的private成员,并在DatabaseList类中添加getter( getDb() )并对其进行迭代( 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而是一个包装器,因此不能在增强的for循环中使用

暂无
暂无

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

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