【问题标题】:Getting back data from JList从 JList 取回数据
【发布时间】:2013-03-12 05:01:42
【问题描述】:

我正在谷歌搜索从 JList 组件中检索数据的解决方案,但没有找到任何解决方案。那么,是否有 Jlist 的方法可以返回其项目?我不想要一个选定的。我想要整个清单。

原因是我有这个方法可以根据列表框的选定值更新对话框的所有组件。我想用同样的方法更新那个列表框。所以要做到这一点,该方法不应该在被调用时更新列表框。它应该将列表框中的值与我存储在一个类中的最新数据进行比较。(否则进入无限循环)只有当列表框中的数据与类中的数据不匹配时,它才会更新。

有没有这样的方法来检索列表框的所有数据?

【问题讨论】:

    标签: java swing jlist


    【解决方案1】:

    您必须使用 getModel() 方法来获取模型数据,然后使用 ListModel 内部的方法来获取所有数据元素。

    ListModel model = list.getModel();
    
    for(int i=0; i < model.getSize(); i++){
         Object o =  model.getElementAt(i);  
    }
    

    http://docs.oracle.com/javase/6/docs/api/javax/swing/JList.html#getModel()

    http://docs.oracle.com/javase/6/docs/api/javax/swing/ListModel.html

    【讨论】:

    • 谢谢,这就是我要找的!
    【解决方案2】:

    要获得选择,您需要使用getModelgetSelectedIndices 的组合

    ListModel model = jListInstance.getModel();
    
    for(int index : jListInstance.getSelectedIndices()) {
        System.out.println(model.getElementAt(index));
    }
    

    【讨论】:

    • OP 想要获取所有数据,而不仅仅是选定的元素。
    【解决方案3】:

    使用 getModel() 方法检索包含在 JList 中的数据模型。 List 模型可以通过以下方式遍历:

    ListModel list = jListObj.getModel();
    for(int i = 0; i < list.getSize(); i++){
         Object obj = list.getElemenetAt(i);
    }
    

    http://docs.oracle.com/javase/6/docs/api/javax/swing/ListModel.html http://docs.oracle.com/javase/6/docs/api/javax/swing/JList.html#getModel%28%29

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多