Я хочу напечатать строки в JTextArea и правильно их выровнять. Это сложно объяснить, поэтому я загружу снимок экрана того, чего я пытаюсь достичь.
Таким образом, строки, напечатанные в каждой строке, печатаются из объекта Paper, который имеет параметры (id, title, author, date, rank). Данные считываются из текстового файла и сохраняются в 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
Я работал над этим некоторое время, но до сих пор не могу найти решение. Как вы можете заметить, на картинке выше не все идеально выровнено, как предполагалось.
Как их идеально выровнять, чтобы выглядело лучше? Спасибо.