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 avec JComboBox


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Par défaut JTable avec JComboBox
    Bonsoir les javaDév.

    Un tit soucis me rencontre:
    Après avoir pu insérer un Composant (JComboBox ou autre ) je peux pas manipuler le composant ajouter !!

    mon tab
    Code java : 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
     
     
     
    void CreJTable () {
     
     
    	model2=new  DefaultTableModel(DD,EE);
    	T= new JTable(model2);
    	T.setRowHeight(20);
    	T.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    	T.setFont(new Font("CHB",Font.TRUETYPE_FONT,12));
    	T.getColumnModel().getColumn(0).setPreferredWidth(50);
    	T.getColumnModel().getColumn(1).setPreferredWidth(80);
    	T.getColumnModel().getColumn(2).setPreferredWidth(167);
    	T.getColumnModel().getColumn(3).setPreferredWidth(50);
    	T.getColumnModel().getColumn(4).setPreferredWidth(30);
    	T.getColumnModel().getColumn(5).setPreferredWidth(80);
    	T.getColumnModel().getColumn(6).setPreferredWidth(30);
    	T.getColumnModel().getColumn(7).setPreferredWidth(30);	 
    	T.getColumnModel().getColumn(8).setPreferredWidth(50);	 
    	T.getColumnModel().getColumn(9).setPreferredWidth(50);	
    	T.getColumnModel().getColumn(10).setPreferredWidth(50);	
    	T.getColumnModel().getColumn(11).setPreferredWidth(50);	
    	T.getColumnModel().getColumn(12).setPreferredWidth(50);	
    	T.getColumnModel().getColumn(13).setPreferredWidth(90);	
    	T.getTableHeader().setPreferredSize(new Dimension(9000, 50));
    	//		T.setDefaultRenderer(Object.class, new CellMvt(T_retrait,T_Alim,T_Inventaire));
     
     
     
    	P=new JScrollPane(T);
    	P.setBounds(15,300,860,300);
    	P.setEnabled(false);
    	P.setAutoscrolls(true);
    	P.setOpaque(true);
    	P.setBackground(Color.WHITE);
    	P.setForeground(Color.WHITE);
    	getContentPane().add(P, BorderLayout.CENTER);
     
     
     
    	T.getColumnModel().getColumn(2).setCellRenderer(
    			new tab_bord_cell_render());
     
     
     
     
     
     
     
    	model2.addRow(new Object [] {"381"	,"N2370401",	new  JComboBox()	, "S90"	,"2" ,	"381 / 118" , 	"-" ,	"-" ,	"0" ,	"0,00" , 	"0,00" , 	"0,00"	, "0,00" ,	"0,00" ,});
     
     
     
    }



    et voici mon son render :

    Code java : 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
     
     
    package tab_bord;
     
    import java.awt.Color;
    import java.awt.Component;
     
    import javax.swing.*;
    import javax.swing.table.DefaultTableCellRenderer;
     
    public class tab_bord_cell_render extends DefaultTableCellRenderer {
     
     
    	private static final long serialVersionUID = 1L;
     
    	public Component getTableCellRendererComponent(JTable table,
    			Object value, boolean isSelected, boolean hasFocus, int row,
    			int column) {
     
     
    	 	if (value instanceof JComboBox) {
    			((JComboBox) value).setEditable(false);
    			((JComboBox) value).addItem("1");
    			((JComboBox) value).addItem("2");
    			((JComboBox) value).addItem("3");
    			((JComboBox) value).addItem("4");
    			((JComboBox) value).addItem("5");
    			((JComboBox) value).isShowing();
    			return (JComboBox) value;
    		}
     
     
    		if (value instanceof Boolean) {
    			JCheckBox cb = new JCheckBox();
     
    			cb.setSelected(((Boolean) value).booleanValue());
    			return cb;
    		}
     
     
    		if (value instanceof JCheckBox) {
     
    			((JCheckBox) value).setSelected(true);
    			return (JCheckBox) value;
    		}
     
     
    		return new JLabel(value.toString());
    	}
    }

    Ci-joint l'image de l'interface créée

    Merci pour toute aide
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il ne faut pas mettre de composants Swing dans le modèle de la JTable.
    Le modèle n'est censé contenir que des données.

    Les Renderers et Editors pour gérer ce qui est de l'aspect graphique.

    Dans ton cas je ferais plutôt en sorte que la JComboxBox ne s'affiche que lors de l'édition, ça permet de ne pas surcharger la table avec un coté graphique inutile.

    La seule chose que tu as à faire est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    JComboBox combo = new JComboBox.
    combo.add ("");
    combo.add ("1");
    combo.add ("2");
    combo.add ("3");
    combo.add ("4");
     
    DefaultCellEditor editor  = new DefaultCellEditor(combo);
    T.getColumnModel().getColumn(2).setCellEditor(Editor);
    De cette façon, tu n'as rien mettre dans ta colonne initialement (juste la valeur null);

  3. #3
    Membre chevronné Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Par défaut
    Merci SinOk
    je vais modifier le code ...

  4. #4
    Membre chevronné Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Par défaut Résolu !!!
    Mercii SinOk encore une fois

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

Discussions similaires

  1. Jtable avec model, avec une colonne JComboBox avec model
    Par rednight dans le forum Composants
    Réponses: 2
    Dernier message: 18/11/2013, 11h58
  2. Problème avec listner de JTable avec JComboBox
    Par amine1980 dans le forum Composants
    Réponses: 0
    Dernier message: 12/02/2013, 01h06
  3. Mise à jour d'un JTable avec JComboBox
    Par Akhilleus dans le forum Composants
    Réponses: 6
    Dernier message: 29/12/2011, 17h00
  4. cellule Jtable avec Jcombobox
    Par mina86 dans le forum Composants
    Réponses: 2
    Dernier message: 11/08/2008, 16h18
  5. probleme de jtable avec mysql et jcomboBox
    Par Invité dans le forum JDBC
    Réponses: 1
    Dernier message: 19/11/2007, 10h16

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