[Swing] Texte multiligne dans un JLabel

Texte multiligne dans un JLabel [Swing] - Programmation

Marsh Posté le 12-02-2002 à 13:47:28    

Je voudrais utiliser un JLabel pour afficher des infos qui tiennent sur 10 lignes. Le problème, c'est que si j'écris un '\n' dans le JLabel, il me marque un vieux carre à la place. J'ai essaye avec la propriete systeme "line.separator" : pareil. En fait, la seule solution que j'ai trouve, c'est d'utiliser des balises html

Code :
  1. <li>

, mais je trouve ca un peu "bidouille". Est-ce que qqun sait coment faire ?


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 12-02-2002 à 13:47:28   

Reply

Marsh Posté le 12-02-2002 à 13:48:35    

bin la sémantique du JLabel c'est d'être un label simple sur une ligne, c'est pour ca que tu n'arrives pas à faire mieux ;)
 
Tu veux les afficher où (dans quoi) ces infos?


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 12-02-2002 à 13:51:32    

ben tu te crées une classe MultiLineLabel....Qui affiche plusieurs JLabel dans un JPanel, en créant des labels qui contiennent le texte entre chaque \n...
C tout con!! :D
 
Ca donnerai qqchose du genre :
 
public class MultiLineLabel extends JPanel {
 
public MutliLineLabel(String text) {
      super(new BoxLayout());
      StringTokenizer st = new StringTokenizer(text, "\n" );
      while(st.hasMoreTokens()) {
            add(new JLabel(st.nextToken()));
      }
}
 
}
 
 
Bon, je sais pas si ça marche, je l'ai pas testé, mais normalement, y'a pas de raison.

Reply

Marsh Posté le 12-02-2002 à 13:52:22    

joli gfive. Connaissait pas !
 
merchi ;)

 

[jfdsdjhfuetppo]--Message édité par darklord22--[/jfdsdjhfuetppo]


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 12-02-2002 à 13:53:37    

Ben en fait ces infos sont des stats sur le derpoulement du programme (temps ecoule, temps restant, etc...) et je voulais les afficher dans un JLabel avec un belle bordure, dans un JPanel.
Je me doutais que le JLabel etait pas fait pour du multiligne (encore qu'il est utilisé comme ca dans les exemples du tutorial Java), mais je voudrais une zone de texte non éditable et qui ai la meme couleur que le JPanel, et le JLabel semblait la solution la plus simple.

 

[jfdsdjhfuetppo]--Message édité par R3g--[/jfdsdjhfuetppo]


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 12-02-2002 à 13:54:56    

Exact gfive, pas mal du tout. Merci.


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 12-02-2002 à 13:56:43    

Tu le veux en AWT, aussi??? :D:D

Reply

Marsh Posté le 12-02-2002 à 13:57:18    

gfive a écrit a écrit :

Tu le veux en AWT, aussi??? :D:D  




 
frimeur ;)
 
 :hello:


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 30-01-2009 à 16:48:52    

Même mieux.... Le but d'un texte multiligne est de modifier la mise en forme de chaque ligne en fonction de la taille de la fenetre.
Donc là, le mieux serais de découper chaque \n par un nouveau FlowLayout, et chaque espace par un JLabel. Ainsi les mots reviendront à la ligne correctement...
 
ps : Je répond à un sujet vieux de 7ans car il apparait dans les premiers de GOOGLE, et d'autres risquent donc de tomber dessus...


Message édité par Chklang le 30-01-2009 à 16:49:48
Reply

Marsh Posté le 30-01-2009 à 20:41:08    

Encore mieux : Si tu met <html></html> avec ton texte dedans, cela interprete ton texte comme du code html. Donc voici une petite classe bien sympatique :
 

Code :
  1. import javax.swing.JLabel;
  2. public class MultiLigne extends JLabel {
  3.     public MultiLigne(String texte) {
  4.      //Doit remplacer les caractères speciaux...
  5.      //Donc commence par le "&", puis s'occupe des balises, et enfin ajoute les sauts de ligne...
  6.      super ("<html>" + texte.replaceAll("&", "&amp;" ).replaceAll("<", "&lt;" ).replaceAll(">", "&gt;" ).replaceAll("\n", "<br />" ) + "</html>" );
  7.     }
  8. }


Message édité par Chklang le 30-01-2009 à 20:41:45
Reply

Marsh Posté le 30-01-2009 à 20:41:08   

Reply

Marsh Posté le 29-12-2012 à 23:19:29    

R3g a écrit :

Je voudrais utiliser un JLabel pour afficher des infos qui tiennent sur 10 lignes. Le problème, c'est que si j'écris un '\n' dans le JLabel, il me marque un vieux carre à la place. J'ai essaye avec la propriete systeme "line.separator" : pareil. En fait, la seule solution que j'ai trouve, c'est d'utiliser des balises html

Code :
  1. <li>

, mais je trouve ca un peu "bidouille". Est-ce que qqun sait coment faire ?


 
La solution simple
                panneau_publicitaire = new JTextPane();
  panneau_publicitaire.setOpaque(false);  // transparence
                panneau_publicitaire.setFocusable(false); // pas plus de sélection possible
  panneau_publicitaire.setFont(new Font("Tahoma", Font.BOLD, 11));
  panneau_publicitaire.setText("Ce panneau ressemble à un jLabel tout fait mais prend plusieurs lignes " );
  // autres


---------------
L'ouvrage semble facile quand le travail est un plaisir
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed