JOptionPane.showMessageDialog tronque JTextArea message
Mon IHM Java application a besoin de montrer rapidement du texte à la fin de l'utilisateur, de sorte que le JOptionPane
les méthodes de l'utilitaire sembler comme un bon ajustement. En outre, le texte doit être sélectionné (par copier-coller) et il pourrait être un peu long (~100 mots), donc il doit s'intégrer parfaitement dans la fenêtre (pas de texte en dehors de l'écran); idéalement, il devrait tous être affichée à la fois de sorte que l'utilisateur peut le lire sans avoir besoin d'interagir, de sorte que les barres de défilement ne sont pas souhaitables.
J'ai pensé mettre le texte dans un JTextArea
et en utilisant que pour le message dans JOptionPane.showMessageDialog
serait facile, mais il apparaît à tronquer le texte!
public static void main(String[] args) {
JTextArea textArea = new JTextArea();
textArea.setText(getText()); //A string of ~100 words "Lorem ipsum...\nFin."
textArea.setColumns(50);
textArea.setOpaque(false);
textArea.setEditable(false);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
JOptionPane.showMessageDialog(null, textArea, "Truncated!", JOptionPane.WARNING_MESSAGE);
}
Comment puis-je obtenir le texte pour tenir entièrement dans le volet options sans les barres de défilement et de sélection pour le copier/coller?
sonne comme un problème différent, vous devez soumettre une nouvelle question en décrivant ce que vous voulez faire.
OriginalL'auteur maerics | 2010-12-01
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que 1 est un nombre magique, le numéro de clé est la largeur qui provoque l'emballage à se produire.
Ah, ok, maintenant que j'y pense, j'étais probablement en train de jouer avec
setPreferredSize
passetSize
. Merci!Oui, normalement vous devriez ne jamais jouer avec la taille préférée depuis le layout manager utilisera cette information. Dans ce cas, la zone de texte doit connaître la largeur de l'élément, donc il peut faire l'habillage du texte, donc je suppose que la taille de la composante repose également sur sa largeur réelle de sorte que vous devez utiliser setSize(). Semble comme un peu de la poule et de l'œuf problème.
OriginalL'auteur camickr
Si vous avez besoin d'afficher une chaîne d'une longueur inconnue, vous pouvez définir le nombre de lignes "à la volée":
OriginalL'auteur Yuri Joselson
Vous avez eu la bonne idée. Il suffit d'ajuster les lignes de votre textarea.
Cela semble résoudre le problème pour moi, à l'aide de 100 mots du lorem ipsum.
Je suppose que vous avez juste à calculer les lignes de vous-même et de le définir de façon dynamique, par exemple, les lignes = chaîne de caractères de longueur / colonnes.
OriginalL'auteur Joshua McKinnon
Essayez ceci:
OriginalL'auteur Huey