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 :

[debutant][jtable] résoudre les conflits de renderers ?


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    oum
    oum est déconnecté
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2006
    Messages : 56
    Par défaut [debutant][jtable] résoudre les conflits de renderers ?
    Bonjour,

    je dois aligner à droite les colonnes de plsuieurs tables qui héritent (en arrière petit enfant) de JTable.
    Après avoir cherché un peu , j'ai écrit cette méthode que j'appelle avec la table en parametre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    /** cette methode aligne toutes les colonnes à droite
    * ne pas appeler sur table vide mais table remplie */
    public void allRight (JTable table) {
        TableColumn column = null;
        int n=table.getColumnCount();
        for (int i = 0; i < n; i++) {
             column = table.getColumnModel().getColumn(i);
             DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
             renderer.setHorizontalAlignment(SwingConstants.RIGHT);
             column.setCellRenderer(renderer);
        }
    }
    Mon problème est que ça marche bien sur les tables qui ne font que de l'affichage simple. Mais je perd la mise en forme des cellules qui ont déjà un autre renderer ( zone obligatoire avec couleur de fond, combobox dans une cellule, etc...). Comme si le renderer de la colonne annulait les autres. Quand je clique dans une combobox, au lieu de garder le texte de la liste, j'ai des sigles bizarres ( du genre adresse de pointeur) et une exception NulPointerException se déclenche.
    Comment faire pour récupérer les rendrers existants au niveau cellule alors que je suis au niveau colonne ?

    Comment faire ?
    J'ai l'impression de perdre beaucoup de temps sur ce qui aurait dû être une opération simple.
    Quelqu'un sait ?

    oum

  2. #2
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut
    Mais je perd la mise en forme des cellules qui ont déjà un autre renderer
    ben , c'est normal puisque tu redefinis leur Renderer .

    alors tu peux ajouter pour tous les anciens Renderer ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    renderer.setHorizontalAlignment(SwingConstants.RIGHT);
    et la méthode allRight n'a plu lieu d'etre

  3. #3
    oum
    oum est déconnecté
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2006
    Messages : 56
    Par défaut merci
    oui sur le principe, mais je crois que c'est un peu plus complique parce que le setHorizontalAlignement s'applique sur la colonne. Mais sur une cellule il me semble qu'il faut utiliser le setTextHorizontalPosition.
    Et en plus les cellules qui ont un renderer ne sont pas forcément sur toute une colonne, c'est pourquoi je souhaite faire les deux à la fois.

    Mais comment savoir sur une colonne si une cellule a un renderer existant et la suivante pas de renderer du tout. A moins de faire une boucle sur toutes les cellules de la colonne ?

    je me mélange un peu les octets dans ces jtable

Discussions similaires

  1. [Swing]JTable- Dimensionner les colonnes
    Par loutfi dans le forum Composants
    Réponses: 12
    Dernier message: 01/07/2011, 08h50
  2. [Swing / JTable] Rendre les cellules d'un JTable non éditables
    Par Jérôme_20 dans le forum Composants
    Réponses: 20
    Dernier message: 10/02/2011, 10h32
  3. Réponses: 4
    Dernier message: 12/05/2007, 23h24
  4. [Débutant][String] Remplacez les caractères speciaux
    Par paf15 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 27/04/2004, 22h39
  5. [debutant] Postgres et les procedures stockees
    Par bmayer dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 09/01/2004, 10h18

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