2016-04-13 5 views
2

(うまくいけば)簡単な質問です。JOptionPaneのテキストファイルから情報を表示するコードをいくつか書きましたが、各行。複数の行ではなく、1つのJOptionPane内のすべてのテキストを行単位で表示

1行ずつ、1つのJOptionPaneの代わりに、すべての読み込みテキストをボックス単位で表示する方法を教えてください。可能であれば、すべてを書き直す必要はありません。

Scanner inFile = null; 
      try { 
       inFile = new Scanner(new FileReader(curDir + "/scripts/sysinfo.txt")); 
      } catch (FileNotFoundException ex) { 
       Logger.getLogger(DropDownTest.class.getName()).log(Level.SEVERE, null, ex); 
      } 
    while(inFile.hasNextLine()){ 
     String line = inFile.nextLine(); 
JOptionPane.showMessageDialog(null, line, "System Information", JOptionPane.INFORMATION_MESSAGE); 
    } 

私は同様の質問のために周りを見回してきましたが、かなりこれに合わせて何かを見つけることができませんでしたし、ちょうど頼むことにしましたが、私は何とか何かを見逃している場合、私は謝りますと、これは重複として終わります。

ありがとうございました。

答えて

1

あなたはそうのように、このStringBuilderのを表示し、その後、単一の大きな文字列を作成するのStringBuilderを使用して試みることができる:

 Scanner inFile = null; 
     StringBuilder builder = new StringBuilder(); 

     try { 
      inFile = new Scanner(new FileReader(curDir + "/scripts/sysinfo.txt")); 
     } catch (FileNotFoundException ex) { 
      Logger.getLogger(DropDownTest.class.getName()).log(Level.SEVERE, null, ex); 
     } 

     while(inFile.hasNextLine()){ 
      String line = inFile.nextLine(); 
      builder.append(line); 
      builder.append("\n"); // add this for newlines 
     } 

     JOptionPane.showMessageDialog(null, builder, "System Information", JOptionPane.INFORMATION_MESSAGE); 
+0

残念ながら、これは、ファイルの最後に到達するまで、新しいボックスの前の行に次の行を続けて追加することでした。 – Yuuen

+0

ブラケットの位置をずらして固定した後に、すべてのテキストが表示されたことを確認してください。しかし、それはまだ私が目指していたものではありません、私はそれがファイル内に表示されるようにしようとしています、1つの長い行ではなく、次の各行。 – Yuuen

+0

各ループに改行文字を追加すると、上に投稿されます –

1

文字列を作成し、whileループの後に、その単一の文字列を表示します。 whileループでJOptionPaneを表示しているので、各行の出力が表示されます。

​​

このコードでは、メッセージ全体が複数ではなく1つのボックスに印刷されます。

+0

それはそれをテキストの非常に長い行にしようとしていませんか? – MadProgrammer

+0

@ MadProgrammerはい、しかし、それはプログラムの必要に応じて、どのくらいのテキストがファイルに格納されます。それはあなたの答えによって解決することができます。 – Laxminarayan

0

APIがどれほど強力であるか忘れてしまうことがあります。 (メッセージ)のパラメータが...例えば、それはいくつかの種類のコンポーネントの場合、それは単にダイアログに追加されます、

JTextArea ta = new JTextArea(10, 20); 
ta.setEditable(false); 
try (Reader reader = new FileReader(curDir + "/scripts/sysinfo.txt")) { 
    ta.read(reader, "Some stuff"); 
} catch (IOException exp) { 
    ta.append(exp.getMessage()); 
    exp.printStackTrace(); 
} 
JOptionPane.showMessageDialog(null, new JScrollPane(ta), "System Information", JOptionPane.INFORMATION_MESSAGE); 

Objectである。これはちょうどJTextArea(およびJScrollPane)を使用する第二ファイルからテキストを表示します。

関連する問題