有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我需要用外部类(同一个包)中的ArrayList填充表单中的choice组件

数据库列表。爪哇: 包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");
    }
}

主窗体。爪哇:

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 not applicable to expression type. Required Array or java.lang.iterable. Found: DatabaseList.

但是,ArrayList不是iterable接口吗


共 (2) 个答案

  1. # 1 楼答案

    您必须返回列表:

    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);
    }
    
  2. # 2 楼答案

    使db列表成为类的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本身,只是一个包装器,因此不能在enhanced for loop中使用