Я хочу напечатать строки в JTextArea и правильно их выровнять. Это сложно объяснить, поэтому я выложу скриншот того, чего я пытаюсь достичь.
![Screen shot of what I have got so far](https://i.stack.imgur.com/xwe3i.png)
Таким образом, строки, напечатанные в каждой строке, печатаются из объекта Paper, который имеет параметры (идентификатор, название, автор, дата, ранг). Данные читаются из текстового файла и сохраняются в LinkedList с помощью функции loadPaper ().
Затем функция displayPapers () используется для отображения содержимого объекта Paper в JTextArea.
displayPapers () перечислены ниже:
/** Print all Paper object present in the LinkedList paperList to textArea */
public void displayPapers(){
// clear textArea before displaying new content
displayTxtArea.setText("");
Paper currentPaper;
ListIterator<Paper> iter = paperList.listIterator();
while(iter.hasNext()){
currentPaper = iter.next();
String line = currentPaper.toString();
if("".equals(line)){
continue;
} // end if
String[] words = line.split(",");
displayTxtArea.append (" "
+ padString(words[0],30)
+ padString(words[1],30)
+ " "
+ padString(words[2],30)
+ " "
+ padString(words[3],30)
+ padString(words[4],30)
+ "\n");
System.out.println(words);
//displayTxtArea.append(currentPaper.toString());
} // end while
displayTxtArea.append(" Total " + noOfPapers + " entries!");
} // end showAllPaper
Функция padString () добавляет пробелы в строку, так что все они имеют одинаковое количество слов. PadString () указан ниже:
/** Add spaces to Strings so that all of the are of same number of characters
* @param str String to be padded
* @param n total number words String should be padded to
* @return str Padded string
*/
private String padString(String str, int n){
if(str.length() < n){
for(int j = str.length(); j < n; j++){
str += " ";
} // end for
} // end if
return str;
} // end padString
Я работал над этим некоторое время, но все еще не могу найти решение. Как вы можете заметить на картинке выше, не все идеально выровнено, как задумано.
Как правильно их выровнять, чтобы он выглядел лучше? Спасибо.