2011-01-31 17 views
0

highscore.txtファイルを読んで、ゲームのハイスコアメニューに表示できるようにしようとしています。 私のhighscore.txtの内容はSCOREとNAMEです。例:Javaファイルの読み込みの問題

150 John 
    100 Charice 
    10 May 

したがって、テキスト領域にファイルを読み込むために次のコードを書きますが、ファイルを読み取ることができません。私のコードは次のとおりです:

public HighScores(JFrame owner) { 
     super(owner, true); 
     initComponents(); 
     setSize(500, 500); 
     setLocation(300, 120); 
     getContentPane().setBackground(Color.getHSBColor(204, 204, 255)); 

     File fIn = new File("highscores.txt"); 
     if (!fIn.exists()) { 
      jTextArea1.setText("No high scores recorded!"); 
     } else { 
      ArrayList v = new ArrayList(); 
      try { 
       BufferedReader br = new BufferedReader(new FileReader(fIn)); 
       String s = br.readLine(); 
       while (s != null) { 
        s = s.substring(2); 
        v.add(s); 
        s = br.readLine(); 
       } 

       br.close(); 
      } catch (IOException ioe) { 
       JOptionPane.showMessageDialog(null, "Couldn't read high scores file"); 
      } 

      // list to display high scores 
      JList jlScores = new JList(v); //there's a problem here. I don't know why 
      jTextArea1.add(jlScores, BorderLayout.CENTER); 

     } 
    } 

私は間違って何ですか?どうすればこの作品を作ることができますか?あなたは非常に高く評価されるでしょう。前もって感謝します。

+0

あなたはあなたのファイルからテキストの行を解析する方法を見たいかもしれません。 's = s.substring(2);'は文字列から最初の2文字を削除します。代わりに、スペース文字の上に文字列を分割してトークンの配列を取得することができます。この場合[0]はスコアになり、[1]は名前になります。 – Qwerky

+0

@Qwerkyどうすれば分割できますか?ありがとうございます – newbie

+0

http://download.oracle.com/javase/6/docs/api/java/lang/String.htmlのStringのAPIドキュメントを確認してください。「split」というメソッドがあります。 – Qwerky

答えて

3

あなたはファイルの内容をArrayList vに読み込んでいますが、それを埋め込んだ後は何もしません。

スコアを表示するコードには、jTextArea1に空の番号JListが追加されています。 ArrayList vの内容でJListを記入してください。

+0

どうすればいいですか?ありがとうございました。 – newbie

1

JListをArrayListオブジェクトで初期化しようとしています。

JList jlScores = new JList(v); 

私は、ArrayListのとはJListのコンストラクタが存在しないため、それが問題になることができ、one with Vectorがあると思います。

1
JList jlScores = new JList(v); //there's a problem here. I don't know why 

のArrayListを取るコンストラクタがありません、javadocでコンストラクタを見ています。代わりに、arraylistを配列に変換し、コンストラクタでそれを使用します。

arraylistを配列に変換する方法については、これは宿題なので練習として残しておきますが、グーグルでは問題はありません。 JList Tutorialで説明したように、次のように

1

、私は、JListのを移入するためのListModelを使用してお勧めします:

//create a model 
DefaultListModel listModel = new DefaultListModel(); 

//now read your file and add each score to the model like this: 
listModel.addElement(score); 

//after you have read your file, set the model into the JList 
JList list = new JList(listModel); 
関連する問題