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 :

gestion entête boutons d'une JTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 80
    Par défaut gestion entête boutons d'une JTable
    Bonjour,
    J'ai creer une JTable avec entête de boutons.
    Mes boutons viennent de la classe Selection qui herite de JButton et qui permet de mettre une image de fond lorque l'on fait appel à changeColor();

    Pour commencer, j'ai d'abord fait un changement de couleur simple des boutons lorsque l'on clique dessus
    Tous cela marche parfaitement:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    	/* Numero de serialisation par defaut.*/
    	private static final long serialVersionUID = 1L;
     
    	/* Index de l'entête de colonne ayant été pressé. */ 
    	int pushedColumn;
     
    	/* Tableau de couleur des entêtes du tableau. */
    	Color [] couleur=new Color[7];
     
    	Color defaut=new Color(189,189,189);
     
    	/**
             * Le constructeur de la classe.
             */
    	public ButtonHeaderRenderer() 
    	{     
    		super(" ");
    		// Pour aucun entête pressé pushedColumn est mis à -1.
    		pushedColumn   = -1;   
    		//Aucune marge autour du bouton.
    		setMargin(new Insets(0,0,0,0)); 
    		//Initalisation du tableau de couleur par les valeurs par defaut.
    		for(int i=0;i<7;i++)
    			couleur[i]=UIManager.getColor("JButton.background");
    	}   
    	/** Methode permettant la gestion des evenements des entêtes de colonnes.
             * @param table La table en cours d'utilisation.
             * @param value Le composant ayant fait appel à la methode
             * @param isSelected Defini si le composant est selectionné.
             * @param hasFocus Defini si le composant possède le focus. 
             * @param row La ligne du composant.
             * @param column La colonne du composant. 
             * 
             */
    	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 
    	{    
    		setText((value ==null) ? "" : value.toString());  
    		boolean isPressed = (column == pushedColumn);  
    		getModel().setPressed(isPressed);   
    		getModel().setArmed(isPressed);
    		if(isPressed)
    		{
    			if(couleur[column-1]==defaut)
    				couleur[column-1]=UIManager.getColor("JButton.background");
    			else 
    				couleur[column-1]=defaut;
    		}
    		setBackground(couleur[column-1]);
    		return this; 
    	} 
    	/**
             * Indique qu'un entête a été pressé.
             * @param col La colonne de l'entête pressé.
             */
    	public void setPressedColumn(int col) 
    	{ 
    		pushedColumn = col; 		  
    	}
    La où ça devient difficile c'est lors de l'integration du changement de fond en faisant appel à la methode de la classe Selection.

    En effet je n'arrive pas à changer la couleur du boutons voulus...

  2. #2
    Membre chevronné Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Par défaut
    ca aurait été plus sympa que tu fournisses le code complet que tu utilises... et mieux encore, un code éxécutable directement ...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 80
    Par défaut
    ok c bon:
    tout seul comme un grand
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    public class ButtonHeaderRenderer extends BoutonModif implements TableCellRenderer {
    	/* Numero de serialisation par defaut.*/
    	private static final long serialVersionUID = 1L;
     
    	/* Index de l'entête de colonne ayant été pressé. */ 
    	int pushedColumn;
     
    	/* Tableau de couleur des entêtes du tableau. */
    	boolean [] couleur=new boolean[7];
     
    	Color defaut=new Color(255,151,47);
     
    	/**
             * Le constructeur de la classe.
             */
    	public ButtonHeaderRenderer() 
    	{     
    		super(" ","testa.png");
    		// Pour aucun entête pressé pushedColumn est mis à -1.
    		pushedColumn   = -1;   
    		//Aucune marge autour du bouton.
    		setMargin(new Insets(0,0,0,0)); 
    		//Initalisation du tableau de couleur par les valeurs par defaut.
    		for(int i=0;i<7;i++)
    			couleur[i]=false;
    	}   
    	/** Methode permettant la gestion des evenements des entêtes de colonnes.
             * @param table La table en cours d'utilisation.
             * @param value Le composant ayant fait appel à la methode
             * @param isSelected Defini si le composant est selectionné.
             * @param hasFocus Defini si le composant possède le focus. 
             * @param row La ligne du composant.
             * @param column La colonne du composant. 
             * 
             */
    	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 
    	{    
    		setText((value ==null) ? "" : value.toString());  
    		boolean isPressed = (column == pushedColumn);  
    		getModel().setPressed(isPressed);   
    		getModel().setArmed(isPressed);
    		if(isPressed)
    		{
    			if(couleur[column-1])
    				couleur[column-1]=false;
    			else 
    				couleur[column-1]=true;
    		}
    		changeColor(couleur[column-1]);
    		return this; 
    	} 
    	/**
             * Indique qu'un entête a été pressé.
             * @param col La colonne de l'entête pressé.
             */
    	public void setPressedColumn(int col) 
    	{ 
    		pushedColumn = col; 		  
    	}
     
    }

Discussions similaires

  1. inserer un bouton dans une jtable qui marche
    Par christianf dans le forum Composants
    Réponses: 1
    Dernier message: 27/09/2007, 01h07
  2. ActionListener sur un bouton d'une Jtable
    Par tchoukapi dans le forum Composants
    Réponses: 2
    Dernier message: 10/07/2007, 17h25
  3. [excel] Pb de gestion de boutons sur une nouvelle feuille
    Par kenny49 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/08/2006, 18h22
  4. bouton dans une jtable
    Par hokidoki dans le forum Composants
    Réponses: 1
    Dernier message: 15/05/2006, 18h46
  5. gestion des boutons d'une manette : relachement
    Par backfire dans le forum DirectX
    Réponses: 1
    Dernier message: 05/01/2005, 10h13

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