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 + Supprimer la surbrillance d'une celle sélectionné


Sujet :

Composants Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 62
    Par défaut JTable + Supprimer la surbrillance d'une celle sélectionné
    Bonjour.

    Voila , j'avoue que je suis encore novice en java et découvre à peine la documentation des objets proposée.

    Cependant j'essaie de bêtement de configurer un JTable à ma sauce.
    PIMP MY JTabe quoi...

    Mon souhait est crée un tableau de x lignes et y colonnes qui ont les contraintes suivantes au niveau de la vue :

    1) Lorsque je clique n'importe ou dans mon JTable , je dois sélectionné la ligne correspondant.
    se que j'effectue comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    table.setSelectionMode(0);
    table.setRowSelectionAllowed(true);
    2) L'apparition de dette cellule sélectionné ( "en surbrillance" c'est quoi ce petit rectangle autour de la cellule?) ne dois pas être visible!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //??? j'ai essayé 
    table.setCellSelectionEnabled(false);
    // sans résultat
    3) Lorsque j'exécute comme voulu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table.setShowGrid(false);
    Il subsiste une ligne blanche entre chaque ligne, comment y remédier?

    4) je voudrais également exécuter une méthode qui ferais un style de Alternating BackGround Corol si possible.

    J'ai déja réussi à contourner ces obstacles en C++ avec Qt qui ressemble plus ou moins aux objets fourni par Swing.

    Mais il subite des différence que je n'ai pas encore trouver.

    Notamment pour les questions 2)3) ou j'ai du chipoter avec des QStyleSheet sur le Border de la cellule sélectionné et non sélectionné.
    pour la 4) une méthode toute faite (" setAlternatingBackGroundColor(true) ") + QStyleSheet.

    Je sais pas si vous avez tous suivie mais bon.

    Si vous avec quelque " méthodes " à suggérer ou conseils , c'est pas de refus!

    De plus je ne sais pas si tout est possible avec les librairie en java que je dispose.

    Merci

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,



    Citation Envoyé par HadJack Voir le message
    1) Lorsque je clique n'importe ou dans mon JTable , je dois sélectionné la ligne correspondant.
    se que j'effectue comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    table.setSelectionMode(0);
    table.setRowSelectionAllowed(true);
    Utilises les constantes plutôt que les valeurs en dur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    Citation Envoyé par HadJack Voir le message
    2) L'apparition de dette cellule sélectionné ( "en surbrillance" c'est quoi ce petit rectangle autour de la cellule?) ne dois pas être visible!
    Cette bordure signale la cellule ayant le focus.
    Pour la supprimer tu devras utiliser ton propre listener :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class MyRenderer extends DefaultTableCellRenderer {
     
    	@Override
    	public Component getTableCellRendererComponent(JTable table, Object value,
    			boolean isSelected, boolean hasFocus, int row, int column) {
    		// On utilise la méthode parente pour les traitements par défaut : 
    		super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    		// Dans tous les cas on supprime la bordure :
    		setBorder(null);
    		// Et on retourne l'élément courant qui est le composant du renderer
    		return this;
    	}
     
    }
    Puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // A adapter si tu as d'autres types à représenter :
    table.setDefaultRenderer(Object.class, new MyRenderer());

    Citation Envoyé par HadJack Voir le message
    3) Lorsque j'exécute comme voulu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table.setShowGrid(false);
    Il subsiste une ligne blanche entre chaque ligne, comment y remédier?
    La grille n'est pas dessiné, mais l'espace libre entre les cellules reste présent. Il suffit de le réduire à néant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table.setIntercellSpacing(new Dimension(0,0));
    Citation Envoyé par HadJack Voir le message
    4) je voudrais également exécuter une méthode qui ferais un style de Alternating BackGround Corol si possible.
    Soit tu gères cela dans le renderer, soit tu utilises la propriété "alternateRowColor" utilisé par le renderer par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UIManager.put("Table.alternateRowColor", new Color(200, 200, 200));
    a++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 62
    Par défaut
    Merci pour cette aide très précise et suffisamment claire.

    Cela ma permis de résoudre le point n° 1, 2 et 3 .

    Mais par contre je galére encore avec la doc et l'insertion des import. ...

    Mais bon je m'en sort plutôt bien.

    Par Contre le point 4 reste encore un mystére pour moi:

    UIManager.put("Table.alternateRowColor", new Color(200, 200, 200));
    UIManager ca me dit vagment qq chose "designe ..."
    .put ??? c'est quoi çà ?

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    L'UIManager gère le Look&Feel et ses propriétés. Il peut donc comporter toute une série de propriété utilisé par le Look&Feel.

    Par défaut le renderer utilisera la propriété "Table.alternateRowColor" comme seconde couleur pour alterner les lignes. Il suffit donc de définir cette propriété dans l'UIManager...


    a++

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 62
    Par défaut
    Héhé .En cherchant encore mieux dans la doc j'ai trouver mon bonheur.

    Du coup le point 4 est résolu également!

    Encore merci à toi adiGuba

    a++

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 62
    Par défaut
    Par défaut le renderer utilisera la propriété "Table.alternateRowColor" comme seconde couleur pour alterner les lignes. Il suffit donc de définir cette propriété dans l'UIManager...
    et ca marche nickel de chez Nickel , et moi qui avais peur de passé au java , j'attend de voir la suite...

    TY

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/11/2010, 11h59
  2. Réponses: 4
    Dernier message: 24/09/2007, 19h36
  3. Supprimer une ligne sélectionnée
    Par cadaric dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 22/06/2007, 12h34
  4. [JTable] Supprimer une ligne d'un jtable
    Par Orionmel dans le forum Composants
    Réponses: 5
    Dernier message: 05/11/2004, 23h29
  5. Réponses: 9
    Dernier message: 12/08/2002, 08h38

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