2017-05-01 57 views
-2

好的。所以我需要製作一個Java GUI swing應用程序,並且我試圖通過列將txt文件中的數據傳遞給4個jList。 例如,我有這樣一行:「約翰蘋果黃金15」在我的txt文件中,我需要把每個單詞放入4個單獨的jLists。我的第一個代碼列表如下,現在即時通訊卡在java gui將.txt文件的值傳遞給多個jLists

for (Object item : itemList) { 
      ; 
} 
try { 
      BufferedReader buf = new BufferedReader(new FileReader("dfata.txt")); 
      ArrayList<String> words = new ArrayList<>(); 
      String lineJustFetched = null; 
      String[] attributes; 

      while (true) { 
       lineJustFetched = buf.readLine(); 
       if (lineJustFetched == null) { 
        break; 
       } else { 
        attributes = lineJustFetched.split("\t"); 
        Item item = new Item(attributes[0], attributes[1], attributes[2], attributes[3], attributes[4]); 
        itemList.add(item); 
       } 
      } 

      buf.close(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     for (Object item : itemList) { 
      ; 
     } 
     jListItemType.setModel(new javax.swing.AbstractListModel<String>() { 
      String[] strings = {""}; 

      public int getSize() { 
       return strings.length; 
      } 

      public String getElementAt(int i) { 
       return strings[i]; 
      } 
     }); 
class Item { 

    String id; 
    String type; 
    String model; 
    String size; 
    String color; 

    public Item(String id,String type, String model, String size, String color) { 
     this.id = id; 
     this.type = type; 
     this.model = model; 
     this.size = size; 
     this.color = color; 
    } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getType() { 
     return type; 
    } 

    public void setType(String type) { 
     this.type = type; 
    } 

    public String getModel() { 
     return model; 
    } 

    public void setModel(String model) { 
     this.model = model; 
    } 

    public String getSize() { 
     return size; 
    } 

    public void setSize(String size) { 
     this.size = size; 
    } 

    public String getColor() { 
     return color; 
    } 

    public void setColor(String color) { 
     this.color = color; 
    } 
} 
+1

''現在我被卡住了......「 - 卡住了,以什麼方式?請告訴任何重要細節。 –

+0

我不知道如何解析從文件到jList通過使用 –

回答

2

建議:

  • 我認爲沒有必要爲你延長的AbstractListModel 。這似乎只是增加了您的計劃的複雜性,沒有任何好處。
  • 而是爲什麼不使用DefaultListModel<Item>您Jlist的模型
  • 變化是for-each循環,使其通過項目循環不是對象,然後這個循環中添加您的物品進入DefaultListModel。
  • 或者更好的是,你的程序沒有必要擁有物品清單,而是直接在你填寫itemList的地方填寫你的DefaultListModel<Item>
  • 要正確顯示列表,可以給Item a toString()方法或設置JList的渲染器。要做後者,只需擴展DefaultListCellRenderer。

請檢查下面的鏈接:

例如,

private DefaultListModel<Item> itemModel = new DefaultListModel<>(); 
private JList<Item> itemList = new JList<>(itemModel); 

// elsewhere 
lineJustFetched = buf.readLine(); 
if (lineJustFetched == null) { 
    break; 
} else { 
    attributes = lineJustFetched.split("\t"); 
    Item item = new Item(attributes[0], attributes[1], attributes[2], attributes[3], attributes[4]); 
    itemModel.addElement(item); 
} 

有關DefaultListCellRenderer的更多信息,請參閱我的回答here

+0

你能提供一個代碼?似乎不明確。 –

+1

@DanielVantas:請參閱附件鏈接。還有什麼特別含糊,什麼使你困惑? –

+0

@DanielVantas:添加了一些代碼。請注意,我不是你的低調選民。 –