繁体   English   中英

从ArrayList中为JList Java获取字符串数组

[英]Fetch array of strings from ArrayList for JList Java

我要做的任务很简单,但是我遇到了JList组件的一个问题。

我需要的是。 我从数据库获取数据,将其加载到String数组,将数组打包到ArrayList中(只是因为我不知道有多少条记录),从方法中将其作为ArrayList返回。 现在在接收方。 我遇到了麻烦,我无法从ArrayList中获取String数组,以便可以传递给JList。

这是代码。

ArrayList<Object> fetch = new ArrayList<Object>();
public String[] data =new String[10];
    listModel = new DefaultListModel();      
    myList = new JList(listModel);
    //myList = new JList(data);
    // So it works with simple array of strings.
    fetch=DAO.loadPasswords();
     //At this point it asks me to cast an object to smth which late cause null pointer exception.
    myList = new JList(fetch.get(0));

这是loadPasswords();

public static ArrayList<Object> loadPasswords(){
    dbConnect();
    boolean unswer = false;
    String[] result=null;
    String query1 = "select * from tblPasswordsStorage where "
            + "_user_id = ?";
    String userId=Personal_Organizer.userProfile.getUserID();
    ArrayList<Object> params = new ArrayList<Object>();
    params.add(userId);
    executeQueryP(query1, params);
    ArrayList<Object> fetched=null;
    try {
        if (rs.next()) {
            unswer = true;
            //Personal_Organizer.userProfile.setUserID(rs.getString(1));
            result[0]=rs.getString(1);
            result[1]=rs.getString(2);
            result[2]=rs.getString(3);
            result[3]=rs.getString(4);
            result[4]=rs.getString(5);
            result[5]=rs.getString(6);
            result[6]=rs.getString(7);
            result[7]=rs.getString(8);
            result[8]=rs.getString(9);
            result[9]=rs.getString(10);
            fetched.add(result);


        }
        if (unswer) {
            while (rs.next()) {
                Tools.print(rs.getString(1));
            }
        }
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null,
                "SQL Server connection issue.\n"
                + "Please, check Server address, user name and password.",
                "Output",
                JOptionPane.PLAIN_MESSAGE);
    }
    dbClose();
    return fetched;
}

我尝试使用多维数组,但JList仍然需要一维数组。

使用DefaultListModel并使用一个简单的for或for-each循环将其加载到您的String中,该循环遍历ArrayList,将ArrayList中的每个String项添加到模型中,或者创建您自己的ListModel类,该类扩展AbstractListModel并使用ArrayList作为其数据核。

编辑,因为您的数据保存在数组的ArrayList中,那么也许您根本不想在ArrayList中显示它,而是在JTable中显示它。 在这里,最好的选择是创建自己的TableModel,它基于AbstractTableModel,并且使用ArrayList作为其数据核。 而且,也许比将数据加载到数组中更好的方法是创建一个自定义类,以保存ResultSet中的每一行数据。


您声明:

我的问题是简单地将某些内容加载到JList。 想法是在列表中显示应用程序/网站名称,然后单击它,您将获得包含在数组中的完整数据。 这就是为什么我将fetch.get(0)...放在一起。 我至少需要一些东西。

然后

  • 创建一个自定义类来保存每一行数据。
  • 从ResultSet的每一行中创建此类的项目
  • 用此类的项目填充DefaultListModel
  • 给您的JList一个自定义的ListCellRenderer,它显示应用程序/网站的名称
  • 然后,您可以显示名称,并且仍然使每个列表项都包含其所需的所有相关信息。

暂无
暂无

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

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