2017-05-01 3 views
-2

Ok。だから私は、Java GUIのスイングアプリケーションを作成する必要があり、私は4つのjListsに列でtxtファイルからデータを渡そうとしています。 たとえば、私はこの行を私のtxtファイルに "John apples golden 15"と書いています。そして、私は4つの別々のjListsにそれぞれの単語を入れる必要があります。最初のリストのための私のコードは以下の通りです、今Imが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にあなたの項目を追加することをお使いのJListのモデル
  • 変更のためDefaultListModel<Item>を使用していません。
  • また、あなたのプログラムがitemlistを持つ必要はなく、DefaultListModel<Item>を直接入力してitemListを埋めてください。
  • リストを正しく表示するには、ItemをtoString()メソッドに設定するか、JListのレンダラーを設定します。後者を行うには、単にDefaultListCellRendererを拡張します。

次のリンクをチェックアウトしてください:

例えば、

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

0を
// 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:いくつかのコードが追加されました。私はあなたの有権者ではないことに注意してください。 –

関連する問題