【问题标题】:Populate JList from ArrayList<> [duplicate]从 ArrayList<> 填充 JList [重复]
【发布时间】:2016-02-13 00:13:14
【问题描述】:

您好,我有一个 ArrayList,其中 catalogo 是我的班级。我会填充这些数组列表的 JList,但我不能......你能帮我吗?

这是你的代码:

public class YouIng {

private List<Catalogo> listaCatalogo = new ArrayList<Catalogo>();

    public YouIng(){
        Catalogo premium = new Catalogo();
        Catalogo standard = new Catalogo();
        listaCatalogo.add(premium);
        listaCatalogo.add(standard);
    }

    public List<Catalogo> getCatalogo(){
        return listaCatalogo;
    }

我使用一个名为 YouIngFrame 的 GUI 类来使用我的程序。当我点击 loginButton 时,它会显示一个 JList,它应该从 listaCatalogo 填充,但它不是。

这里有 YouIngFrame 类:

private void loginButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            
    card.show(mainPanel, "homePanel");
    welcomeLabel.setText("Benvenuto: " +usernameField.getText().toString());

    for(int i=0; i<youing.getCatalogo().size(); i++){
        jList.add(youing.getCatalogo().get(i));
    }    
}                   

希望对你有帮助

编辑:

这是我的 Catalogo.java:

public class Catalogo {

public Catalogo(){
    Categoria commedia = new Categoria();
    Categoria fantasy = new Categoria();
    listaCategoria.add(commedia);
    listaCategoria.add(fantasy);
}

private List<Categoria> listaCategoria = new ArrayList<Categoria>();

public List<Video> CercaVideo(String ParolaChiave) {
    return null;
}

public Video Search(String IDvideo, Categoria cat) {
    return null;
}

public List<Categoria> getCategorie() {
    return listaCategoria;
}

public Categoria aggiungiVideo(Video usr_video, int categoriaScelta) {
    return null;
}

}

【问题讨论】:

  • 请扩展您发布的代码,使其成为有效的minimal reproducible example。请查看链接。
  • 我想填充 Catalogo 元素的 jList 组件,其中 Catalogo 是我的个人类。
  • @xXJohnRamboXx 切勿在 cmets 中提供更多详细信息。请更新您的问题。
  • @FarazDurrani 我尝试了你的最后一个解决方案,但 netbeans 给了我同样的先前错误“没有找到合适的方法用于 add(Catalogo)”

标签: java swing arraylist jlist populate


【解决方案1】:
DefaultListModel dlm = new DefaultListModel();
for(Catalogo p : listaCatalogo ){
     dlm.addElement(p.toString());
}    
JList jList = new JList(dlm);

现在您更改了方法签名。所以这里是根据你的新方法的解决方案:

private void loginButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            
card.show(mainPanel, "homePanel");
welcomeLabel.setText("Benvenuto: " +usernameField.getText().toString());

DefaultListModel<String> dlm = new DefaultListModel<String>();
for(Catalogo p : youing.getCatalogo() ){
 dlm.addElement(p.toString());
}    
JList<String> jList = new JList<String>(dlm);
System.out.println(jList.getModel().toString()); //TO TEST if Jlist successfully added catalogo      
}         

别忘了你必须在 YouIng 类中重写 toString() 方法。

【讨论】:

  • 试过了,还是不行。它没有显示我的 JList 中的 Catalogo 元素
  • 我重写了我所有的问题......希望它能帮助你解决我的问题
  • catalogo.java 包含另一个 ArrayList 但这不是问题。问题是:如何将泛型 Object 显示到 Jlist 组件中?
  • 我尝试了您的最后一个解决方案,但 JList 仍然没有显示任何内容。我想我应该在 jlist 中看到我的 2 个对象,高级和标准,对吗??
  • @xXJohnRamboXx 你有在 YouIng 类中重写的 toString() 方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多