2017-01-20 20 views
-1

私はゲームに取り組んでいます。この部分では、新しいウィンドウが開き、ゲームの指示が表示されます。唯一の問題は、JTextAreaが20行以上あるときに.txtファイルの1行だけを表示することです。私はこれで初心者ですので、私は何が欠けているのか分かりません。ありがとう!Java Swing JTextAreaが動作しません

class Instruction extends JFrame 
{ 
private JTextArea read; 
private JScrollPane scroll; 
Instruction(String x) 
{ 
super(x); 

try 
{ 
    BufferedReader readers = new BufferedReader (new FileReader("instructions.txt")); //read from file 

    read = new JTextArea(readers.readLine()); 
    scroll = new JScrollPane(read); 
    read.setFont(new Font("Comic Sans MS", Font.BOLD, 16)); // change font 
    read.setEditable(false); 
    add(read); 
} 

catch(IOException exception) 
{ 
    exception.printStackTrace(); 
} 
} 
}  
+1

'readers.readLine()'は1行だけを読み取る – MadProgrammer

+0

.............. yikes! –

答えて

3

BufferedReader#readLineだけ次の行を読み込み(または読み取りすべき多くの行が存在しない場合nullを返す)

あなたはJavaDocを詳しく見てみた場合、あなたはJTextAreaJTextComponentからread(Reader, Object)を継承していることがわかります、

read = new JTextArea(); 
try (Reader reader = new BufferedReader(new FileReader("instructions.txt"))) { 
    read.read(reader, null); 
} catch (IOException exception) { 
    exception.printStackTrace(); 
} 
scroll = new JScrollPane(read); 
read.setFont(new Font("Comic Sans MS", Font.BOLD, 16)); // change font 
read.setEditable(false); 
add(read); 
の線に沿って、より

何かあなたの問題の(ほとんど)を解決しますました

あなたはまた

をやろうとしているものを達成かもしれない、あなたは彼らが地域の目に見える境界を超えて拡張する場合の単語の自動折り返しを許可するように

read.setLineWrap(true); 
read.setWrapStyleWord(true); 

を呼び出す必要があります。

-1

ファイルから1行だけを読み取っています。代わりにこれを使用して、ファイル全体をロードしてみてください。

List<String> lines; 
try { 
    lines = Files.readAllLines(); 
} catch (IOException ex) { 
    ex.printStackTrace(); 
} 

StringBuilder text = new StringBuilder(); 
for (String line : lines) { 
    text.append(line); 
} 

read = new JTextArea(text.toString()); 
+0

'JTextArea#read'はあなたに〜5を連れて行った1行で行います...しかし、私は怠け者です:P – MadProgrammer

+0

@MadProgrammerええ、よく分かりませんでした。 – ElectroWeak

関連する問題