Chcę wydrukować ciągi znaków w JTextArea i odpowiednio je wyrównać. Trudno to wyjaśnić, więc prześlę zrzut ekranu z tego, co próbuję osiągnąć.Wyrównanie ciągów w kolumnach w JTextArea
Więc Struny drukowane w każdej linii są drukowane z papieru, który obiekt parametry (id, tytuł, autor, data, pozycja). Dane są odczytywane z pliku tekstowego i są przechowywane w funkcji LinkedList using loadPaper().
Następnie funkcja displayPapers() służy do wyświetlania zawartości obiektu Paper na JTextArea. displayPapers() znajduje się na liście poniżej:
/** 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
Funkcja padString() dodaje spacje na ciąg tak, że wszyscy mają taką samą liczbę słów. PadString() jest wymieniony poniżej:
/** 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
Pracowałem nad tym przez jakiś czas, ale wciąż nie mogę znaleźć rozwiązania. Jak widać powyższe zdjęcie nie wszystko jest idealnie wyrównane zgodnie z przeznaczeniem.
W jaki sposób dopasować je idealnie, aby wyglądało ładniej? Dzięki.
Dlaczego nie można użyć JTable? Bardziej odpowiednie wydaje się wyświetlanie danych w kolumnach. –
Wolałbym wybrać JTable, które dadzą Ci elastyczność podczas gry z rozmiarem i położeniem kolumny itp. – GETah