2015-02-02 2 views
0

У меня есть файл .txt, который имеет 3 линииJTextPane чтения из текстового файла

Мой GUI код

txtpnEmergencyAmbulanceAnd = new JTextPane(); 
    try { 
      // FileReader reads text files in the default encoding. 
      FileReader fileReader = new FileReader(fileNumbers); 

      // Always wrap FileReader in BufferedReader. 
      BufferedReader bufferedReader = new BufferedReader(fileReader); 
      while((lineNumbers = bufferedReader.readLine()) != null) { 
    txtpnEmergencyAmbulanceAnd.setText(lineNumbers); 
     } 
      // Always close files. 
      bufferedReader.close();    
     } 

    catch(FileNotFoundException ex) { 
      System.out.println(
       "Unable to open file '" + 
       fileNumbers + "'");     
     } 
    catch(IOException ex) { 
      System.out.println(
       "Error reading file '" 
       + fileNumbers + "'");  
    } 

Однако то, что печатает в мой GUI только последняя строка. Я пытаюсь распечатать все три линии я также включил эти как глобальный

String fileNumbers = "numbers.txt"; 

String lineNumbers = ""; 

ответ

4

setText делает точно, задает текст компоненты к значению вы передаете его, отказываясь от любого содержания он ранее имел.

Вместо попробуйте использовать JTextPane#read(Reader, Object)

FYI: Вы можете взять более близкий взгляд на The try-with-resources Statement для того, чтобы управлять своими ресурсами лучше

+0

'txtpnEmergencyAmbulanceAnd.read (BufferedReader, fileNumbers);' Это, однако, печатает только мои последние две строки. – friedrojak

+0

Видимо, добавив пустую строку поверх первой строки в файле .txt, исправлено это. – friedrojak

0

Да, потому что вы перезаписать содержимое JTextPane при каждом запуске.

Быстрый и грязный раствор:

txtpnEmergencyAmbulanceAnd.setText(txtpnEmergencyAmbulanceAnd.getText() + lineNumbers); 
+0

Конкатенация String не является хорошей идеей в цикле, уверен, что это три строки, но использование 'StringBuilder' не только будет хорошей практикой, но и в этом случае оно также будет более эффективным, поскольку вы не имеете для преобразования 'Document' в' String', а также – MadProgrammer

+0

Вам, должно быть, удалось упустить «Быстрый и грязный» префикс моего «решения». – Smutje

+0

Как форум профессионалов, мы должны избегать «быстрого и грязного», поскольку это приводит к вредным привычкам, которые затем нужно избивать из людей ... сохранить синяки;) – MadProgrammer

Смежные вопросы