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.

Aligner les Chaînes dans les colonnes de JTextArea

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.

Pourquoi n'utilisez-vous pas un JTable? Il semble plus approprié pour l'affichage des données dans des colonnes.
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