Richten Sie Zeichenfolgen in Spalten in JTextArea
Will ich drucken Strings in JTextArea, und richten Sie Sie ordnungsgemäß. Es ist schwer zu erklären, so werde ich hochladen, der Screenshot von dem, was ich bin versucht zu erreichen.
Also Strings printed in jeder Zeile gedruckt aus Papier-Objekt, das die Parameter (id, Titel, Autor, Datum, Titel). Das Lesen der Daten aus einer text-Datei gespeichert ist, in eine LinkedList mit loadPaper () - Funktion.
Dann displayPapers () - Funktion wird verwendet, um display-Inhalte von der Papier-Objekt, um die JTextArea.
displayPapers() ist nachfolgend aufgeführt:
/** 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
Den padString () - Funktion fügt Leerzeichen an den String so, dass alle von Ihnen haben die gleiche Anzahl von Wörtern. PadString() ist nachfolgend aufgeführt:
/** 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
Habe ich gearbeitet für eine Weile, aber kann immer noch nicht die Lösung zu erhalten. Wie Sie sehen können das Bild oben, nicht alles ist perfekt aufeinander abgestimmt, wie vorgesehen.
Wie kann ich richten Sie Sie optimal aus, so dass es später schöner aussieht? Danke.
- Warum nimmst du nicht eine JTable? Es scheint besser geeignet für die Anzeige von Daten in Spalten.
- Ich gehe lieber für eine JTable, die wird geben Ihnen die Flexibilität, um das Spiel mit Spalte Größe und Lage usw.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ausgabe ausgerichtet werden "richtig" in deinem JTextArea nur, wenn Sie ein mono-proportionale schriftart. "Andale Mono 14" zum Beispiel würde den trick tun.
Auch, um Ihr Leben leichter machen und vermeiden Sie die Polsterung Hölle, verwenden Sie String.format mit syntax.
Verwenden
JTable
statt (für das, was ist offenbar tabellarische Informationen). Sehen Wie Verwenden Von Tabellen für mehr details & funktionierende Beispiele.Können Sie verwenden HTML mit swing-Komponente oder verwenden Sie JEditorPane.
Können Sie auch ändern Sie die schriftart der JTextArea, wenn es erlaubt ist, in Ihrem problem