Aligner les Chaînes dans les colonnes de JTextArea
Je veux imprimer des Chaînes de caractères dans le JTextArea et de les aligner correctement. C'est dur à expliquer, donc je vais télécharger la capture d'écran de ce que je suis en train de réaliser.
Afin de Chaînes imprimés dans chaque ligne sont imprimés à partir de Papier de l'objet qui a des paramètres (id, titre, auteur, date, titre). Les données sont lues à partir d'un fichier texte et est stocké dans une LinkedList à l'aide de loadPaper() fonction.
Puis displayPapers() la fonction est utilisée pour afficher le contenu du Document objet de la JTextArea.
displayPapers() est indiquée ci-dessous:
/** 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
La padString() fonction ajoute des espaces pour les Cordes de façon à ce qu'ils aient tous le même nombre de mots. PadString() est indiquée ci-dessous:
/** 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
J'ai travaillé sur cette question depuis un certain temps mais encore ne peux pas obtenir la solution. Comme vous pouvez le constater la photo ci-dessus, tout n'est pas parfaitement aligné comme prévu.
Comment puis-je les aligner parfaitement, de sorte qu'il ressemble de plus agréable? Merci.
Je préfère aller pour un JTable qui vous donnera la possibilité de jouer avec la colonne de la taille et de la localisation, etc.
OriginalL'auteur Subash | 2011-12-16
Vous devez vous connecter pour publier un commentaire.
Sortie sera aligné "correctement" dans votre JTextArea seulement si vous utilisez un espacement de la police. "Andale Mono 14" par exemple ferait l'affaire.
Aussi, afin de rendre votre vie plus facile et éviter le remplissage de l'enfer, l'utilisation Chaîne de caractères.format avec la syntaxe.
JTable peut-être bien, mais s'en tenir à JTextArea permet d'ajouter d'autres sans mise en forme de l'information pour le même composant, ainsi que plusieurs tables si nécessaire.
à espacement fixe, il fait parfaitement.
OriginalL'auteur Costis Aivalis
Utiliser un
JTable
à la place (ce qui est apparemment information sous forme de tableau). Voir Comment Utiliser Des Tableaux pour plus de détails, & exemples de travail.OriginalL'auteur Andrew Thompson
Vous pouvez utiliser HTML avec swing composant ou de l'utilisation JEditorPane.
OriginalL'auteur adatapost
Vous pouvez également modifier la police du JTextArea si elle est autorisée dans votre problème
OriginalL'auteur nikoo28