Comment faire pour utiliser des chaînes de caractères.format() en Java pour répliquer onglet “\t”?
Je suis d'impression de données ligne par ligne et voulez qu'il soit organisé comme une table.
J'ai d'abord utilisé firstName + ", " + lastName + "\t" + phoneNumber
.
Mais pour certains des plus grands noms, le numéro de téléphone est poussé hors de l'alignement
Je suis en train d'utiliser des chaînes de caractères.format() pour obtenir cet effet. Quelqu'un peut me dire le format de la syntaxe à utiliser?
J'ai essayé String.format("%s, %s, %20s", firstName, lastName, phoneNumber)
, mais ce n'est pas ce que je veux. Je veux qu'elle ressemble à ceci:
John Smith 123456789
Bob, Madison 123456789
Charles, Richards 123456789
Edit:
Ces réponses semblent travailler pour le Système..println(). Mais j'en ai besoin pour travailler pour un JTextArea. Je suis en utilisant le textArea.setText()
Travaillé. JTextArea ne pas utiliser les polices à espacement fixe par défaut. J'ai utilisé setFont() pour changer les choses, et maintenant il fonctionne comme un charme. Merci à vous tous pour les solutions.
OriginalL'auteur ask | 2012-12-09
Vous devez vous connecter pour publier un commentaire.
d'envisager l'utilisation d'un nombre négatif pour votre longueur rédacteur de devis:
%-20s
. Par exemple:retourne
Trouvé. Elle devait être en police à chasse fixe.
en effet. Vous pourriez être mieux avec une simple JTable pour l'affichage des données.
Je sais. C'est pour une mission, et ils sont en me forçant à utiliser les zones de texte. Mais je suis en train de le faire paraître belle.
OriginalL'auteur
Essayer de mettre la largeur en deuxième espace réservé avec
-
signe pour remplissage à droite:Cela donnera à la largeur spécifiée pour le deuxième argument(nom de famille) avec remplissage à droite et numéro de téléphone commence après la largeur spécifiée chaîne seulement.
EDIT: Démo:
imprime:
Que voulez-vous dire exactement? Pour firstName =
John
lastName =Smith
et numéro de téléphone, comme1234456677
, il imprime :John, Smith 1234456677
. La avec pour nom de domaine est attribué, avec 20 caractères donc je vois 15 espaces blancs apparaissant aprèsSmith
et avant le numéro de téléphone. J'ai mis à jour la réponse avec un exemple de démonstration. Si vous loking pour quelque chose de différent, laissez-moi savoir.Merci. Il travaille pour le Système..println(). Mais quand j'ai mis ce texte dans un textarea, il ne fonctionne pas.
Juste par curiosité, quelle différence est-ce que vous avez trouvé dans cette réponse et l'autre réponse, vous avez accepté?
Je vous remercie. Le vôtre était aussi la même chose. Mais il a posté la solution la moitié d'une minute avant de vous. Je suis désolé. Mais j'ai jusqu'a voté votre réponse.
OriginalL'auteur
La seule alternative est la boucle de la liste des noms, calculer la longueur maximale de la Chaîne, et d'ajouter les espaces nécessaires après chaque nom afin de s'assurer que tous les numéros commencent à la même colonne.
À l'aide d'onglets a le disavantage que vous ne pouvez pas savoir
a priori
comment de nombreux espaces sont l'équivalent d'un onglet, puisqu'il est dépendant de l'éditeur.OriginalL'auteur