列表模型中的元素类型

Posted

技术标签:

【中文标题】列表模型中的元素类型【英文标题】:Type of elements in a listmodel 【发布时间】:2014-08-30 16:02:13 【问题描述】:

我已经定义了一个自定义的ListModel 作为其他一些类的内部类,其中包含一些数据。为了填充ListModel,我查询一个数据库文件并选择其中的数据,如下面的代码所示。 JList 使用 这个ListModel

我不明白的是“使用未经检查或不安全的操作”。当我使用 -Xlint 编译时,我收到警告: “缺少泛型类 DefaultListModel<E> 的类型参数”

我的问题是下面我的代码第一行中的<E> 是什么:

public class SalListModel extends DefaultListModel<E=?>

    String defaultSearch="*";
    String salName=defaultSearch;

    //inner class constructor
    public SalListModel()

        try

                //connection creates the database if it does not exist
                Class.forName("org.sqlite.JDBC");
                Connection c=
                    DriverManager.getConnection("jdbc:sqlite:"+dbfile);
                Statement st=c.createStatement();

                String sql;
                sql="select "+salName+" from "+tablename+
                    " ORDER BY "+name[0]+" ASC;"; //alphabetical order
                ResultSet rs=st.executeQuery(sql);

                while (rs.next())
                     addElement(rs.getString(name[0])+" "+rs.getString(cnp[0]));
                

                rs.close();
                st.close();
                c.close();
        
        catch (ClassNotFoundException cnfe)
                 System.out.println("SQL SalListModel class not found: "+
                             cnfe.getMessage());
        
        catch (SQLException sqle)
                System.out.println("SalListModel SQL exception:"+
                             sqle.getMessage());
        
    

【问题讨论】:

你必须使用泛型类型,在这篇文章中几乎相同的问题***.com/questions/15718217/… 回答了我的问题。 【参考方案1】:

我已经定义了一个自定义 ListModel

为什么?您没有向模型添加任何新功能。将数据加载到模型中不应被视为新功能。只需在您的类中创建一个方法即可将数据加载到模型中。那么你的代码会是这样的:

ListModel<String> model = new DefaultListModel<String>();
addDataToModel( model );

我的问题是下面代码第一行中的 &lt;E&gt; 是什么:

您正在将String 数据添加到模型中,因此您应该使用DefaultListModel&lt;String&gt;

【讨论】:

以上是关于列表模型中的元素类型的主要内容,如果未能解决你的问题,请参考以下文章

dom应用

如何修改不同类型列表中的元素?

列表中的日历类型元素

python中的列表

从日期时间类型将视图中的元素自动映射到模型

我无法访问列表中的模型字段