begin process at 2010 03 13 16:55:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Général

 > 

Jtable et JComboBox


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Jtable et JComboBox

lundi 28 juillet 2008 à 09:48:00 | Jtable et JComboBox

Spiky33

Bonjour tout le monde,

Je suis confronté à un petit problème. Je souhaite intégrer des JComboBox dans une JTable. Attention tous les combo seront renseigné avec des items différents. De plus, la table intégre des textbox selon le type de donné passé au renderer.
Pour cela j'ai donc créé un renderer et un éditeur. Les combo marchent trés bien, mais le seul soucis provient du fait que lorsque que j'édite une combo la valeur éditer ne reste pas comme selected item.

Il faut que je rentre plus dans les détails. J'ai un objet ModelData qui est injecté dans le model de ma JTable ce qui me permet selon  la définition de l'objet d'afficher un renderer et un editeur différent. Mon objet ModelData peut être soit de type combo ou de type text. Il stocke l'objet courant (pour les combo principalement) et contient donc un tableau de String.

Voici mon editeur:

public class JComboBoxCellEditor extends AbstractCellEditor implements TableCellEditor {
    
     JComboBox              combo;
     JTextField             textArea;
     ModelData              data;
   
    public                  JComboBoxCellEditor() {
        combo       =   new JComboBox();
        textArea    =   new JTextField("");
        data        =   null;
    }
   
    public Component        getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        System.out.println("JComboBoxCellEditor *******  getTableCellEditorComponent ==>> selectedItem{"+((ModelData)value).getSelectedItem()+"}"  );
        data  =   (ModelData)value;
        if( data.getType()  ==  ModelData.COMBO ){
            combo.removeAllItems();
            for(String item: data.getItems())
                combo.addItem(item);
            //data.setSelectedItem(combo.getSelectedItem().toString());
            combo.setEditable(true);
            return combo;
        }else{
            textArea.setText(data.getSelectedItem());
            //data.setSelectedItem(textArea.getText());
            return textArea;
        }
    }

    public Object           getCellEditorValue() {
        System.out.println("JComboBoxCellEditor *******  getCellEditorValue ==>> selectedItem{"+data.getSelectedItem()+"}"  );
        if( data.getType() == ModelData.COMBO ){
            String tmp  =   combo.getSelectedItem().toString();
            data.addItem(tmp);
            data.setSelectedItem(tmp);
            return data;
        }else{
            String tmp  =   textArea.getText();
            data.addItem(tmp);
            data.setSelectedItem(tmp);
            return data;
        }
    }
}


Voici mon renderer:

public class JComboBoxTableCellRenderer  implements TableCellRenderer {
   
    JComboBox   combo;
    JLabel      textArea;
   
    public JComboBoxTableCellRenderer( ) {
        combo   =   new JComboBox();
        textArea    =   new JLabel();
    }
   
    public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column) {
       
        //System.out.println("JComboBoxTableCellRenderer *******  getTableCellRendererComponent ==>> selectedItem{"+((ModelData)value).getSelectedItem()+"}"  );
        ModelData   data    =   (ModelData)value;
       
        if( data.getSelectedItem().contains("ERROR") ){
            JLabel  errorLabel  =   new JLabel( data.getSelectedItem() );
            errorLabel.setForeground(Color.RED);
            return errorLabel;
        }
           
        if( data.getType()  ==  data.COMBO ){
            for (String item : data.getItems()) {
                combo.addItem( item );
            }

            combo.setEditable(true);
            //combo.setSelectedItem( data.getSelectedItem() );
            return combo;
        }else{
            textArea.setText(data.getSelectedItem());
            return textArea;
        }
    }
}


Le principe c'est de pouvoir avoir des combo box et des text field dans la même JTable. Cependant lorsque l'on edite un textfield le champ édité et alors ajouté au ModelData associé à la textfield et elle devient un combo box.
Le seul probléme est que je n'arrive pas à stocker la derbiére valeur éditée.

Please help, je pense que ça doit être tout con mais la même le debug c'est tendu !!!



Cette discussion est classée dans : textarea, data, combo, getselecteditem, modeldata


Répondre à ce message

Sujets en rapport avec ce message

comment acceder à mon fichier properties [ par byob ] Bonjour, j'ai une petite question toute bête. J'ai mis mon fichier properties dans un package  :com.dcl.data.configma classe qui doit recup les proper 2 peti problemes [ par angelimad ] bonjour,j'ai deux question a posées,comment pouvoir rafraichir une jsp apres le choix d'un item d un combo,c'est a dire, que l'utilisateur dispose d'u requete select [ par ikramta ] bonjour tout le monde.je veut afficher un tableau qui contient une seule ligne.la requete est juste mais elle ne m'affiche pas de resultatvoici le cod Allez à la ligne dans un TextArea [ par psyckan ] Bonjour,Je voudrais savoir quelle propriétées faut il donner a un textarea pour que si on lui insere une chaine trop longue, cette chaine aille à la l Ajouter un valeur de type int dans un TextArea [ par psyckan ] Bonjour,Je sais que pour ajouter un chaine de caractere dans un TextArea, il suffit de faire :TextArea1.setText("blabla");OUTextArea1.setText(TextFiel pb couleur TextArea [ par c_raf ] Bonjour,Je suis confronté à un petit problème...Voila j'ai réalisé un t'chat dans lequel se trouve une zone TextArea dans laquelle je reçois tous les blob binaire de java dans JSP [ par senateur17 ] J'ai vu votre message, bon OK si vous ne pouvez m'envoyer un mail , reponds moi ici,s'il vous plait voici mon code dans l'action: byte[] data=.....; r problème avec TextArea [ par baster200x ] bonjour tout le monde, j'ai un petit problème .... ben j'ai réalisé un programme de tel façon il prend un texte à partir d'un TextArea [ String text = connexion de data binding à une UI(User Interface) [ par mima8 ] bon jour j'ai besion d'une aide sur la manipulation de data binding sous netbeans pack mobiliy et comment on fait la connexion entre une databinding e


Nos sponsors


Appels d'offres

Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales