IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

[JTable] Label sur plusieurs lignes


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Par défaut [JTable] Label sur plusieurs lignes
    Bonjour

    Je voudrais avoir un label sur plusieur ligne dans ma Jtable. Je récupère ce dernier au format html sur plusieur ligne mais j'aimerai que la taille de la ligne s'adapte en fonction du nombre de ligne de mon label (je ne sais pas a l'avance combien je vais avoir de ligne).

    Je pensé faire sa dans le TableCellRenderer mais je trouve pas la methode a appliquer pour changer la taille de ma ligne.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 64
    Par défaut
    Je te conseillerais d'utiliser plutôt un JTextArea avec setEditable(false) car je ne crois pas que l'on puisses mettre plusieurs lignes dans un JLabel (en tout cas via NetBeans j'ai pas trouvé, ni dans la javadoc mais je me trompe peut-être).

    Ton JTextArea s'il n'est pas dans un JScrollPane pourrais avoir le comportement que tu recherches et, de plus, il est prévu pour posséder plusieurs lignes.

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Par défaut
    J'utilisé un label car un JtextArea sa me leve une exception :
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: swing.ListeRendezVousTable$1 cannot be cast to javax.swing.JTextArea

    Voila mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public Component getTableCellRendererComponent(JTable table, Object value,
                        boolean isSelected, boolean hasFocus, int row, int column){
    				System.out.println("Valeur de value : " + value);
                                    //Valeur de value : <html>Entrée portets<br>Au feu a gauche<br>Passage piéton<br>Portail noir sur la gauche<br></html>
    				JTextArea label = null;
    				System.out.println("traitement liste");
                                    // Le problème de Cast est là
    				label = (JTextArea) super.getTableCellRendererComponent(
    						table, value, isSelected, hasFocus, row, column);
     
    				return label;
    			}

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 64
    Par défaut
    grrr... problème de réseau, j'ai perdu la réponse que je t'ai faite.

    Bon, le problème c'est que le DefaultRenderer auquel tu fait références s'attend à recevoir un JLabel, sauf que ce que tu veux faire n'est pas un JLabel mais un JTextArea (multiligne). (cf: Tutorial Editor et Renderer)

    Donc tu dois créer ton propre renderer comme celui-ci qui fabrique un ColorRenderer pour afficher une Color, tu devras mettre un JTextArea à la place.

    Juste après, le tutorial explique comment changer le renderer d'une cellule pour une JTable donnée.

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    private TableCellRenderer getItiRenderer() {
    		return new DefaultTableCellRenderer(){
    			@Override
     
    			public Component getTableCellRendererComponent(JTable table, Object value,
                        boolean isSelected, boolean hasFocus, int row, int column){
    				System.out.println("Valeur de value : " + value);
    				JTextArea label = new JTextArea("");
    				System.out.println("traitement liste");
     
    				if ((String) value != null){
    					label.setText((String)value);
    				}
    				return label;
    			}
    		};
    	}
    Voila mon nouveau render. Dans mon JTable je vois que la première ligne comment j'agrandi la taille de ma ligne?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 64
    Par défaut
    Là, c'est un problème de hauteur de cellule à priori, et d'auto resize.

    Le truc c'est que si au départ ta cellule ne contient qu'une ligne, il faut lui donner le comportement de s'agrandir automatiquement.

    Déjà, vérifie que ta cellule contient bien un JTextArea avec 2 cellules, en mettant ton JTextArea dans un JScrollBar que renverra donc ton Renderer, c'est juste histoire d'être sûr que ton JTextArea réagi bien.

    Une fois vérifié, tu peux virer le JScrollBar et t'occuper de la taille de la cellule, ou plutôt de la taille de ta ligne (row) et pour celà il existe setRowHeight(int row, int height) de la class JTable.

    Voilà

Discussions similaires

  1. TileList et Label sur plusieurs lignes
    Par Nexussmb dans le forum Flex
    Réponses: 1
    Dernier message: 19/08/2009, 15h04
  2. écrire le texte d'un label sur plusieurs lignes
    Par sweetdreamer dans le forum Composants VCL
    Réponses: 9
    Dernier message: 03/05/2006, 14h11
  3. [VB.NET] Label sur plusieurs lignes
    Par boulete dans le forum Windows Forms
    Réponses: 11
    Dernier message: 20/04/2006, 17h59
  4. Réponses: 2
    Dernier message: 21/09/2005, 12h18
  5. [JTable] Cellules sur plusieurs lignes
    Par otsgd dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 20/04/2005, 15h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo