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

AWT/Swing Java Discussion :

Supprimer la sélection dans une combo


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 70
    Points : 54
    Points
    54
    Par défaut Supprimer la sélection dans une combo
    Bonjour chers amis de Developpez.com

    ravi d'être de retour parmi vous et sans plus tarder attaquons mon problème du jour. Voila, cela fait un bon moment que je me suis mis à la programmation avec l'EDI Netbeans, j'arrive à une étape ou j'attaque la création d'une application avec base de données (MySQL).

    La connexion est parfaitement établie, les enregistrements dans la base de données impeccable excepté un hic, dans mon JFrame j'ai plusieurs jTextField et quelques jComboBox, jRadioButton et jCheckBox. Les données contenues dans les jTextField sont bien présentes dans ma Table mais pour ce qui est des jComboBox, jRadioButton et jCheckBox j'ai les valeurs par défaut qui s'enregistrent dans ma table. En toute franchise je ne sais pas comment récupérer le choix de l'utilisateur et le stocker dans la table. Je souligne que j'ai un peu chercher la solution par ici et par là mais rien pouvant m'aider à résoudre le problème, voici le code source du bouton chargé d'effectuer les enregistrements:

    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
    
     private void jTgleBtnSaveActionPerformed(java.awt.event.ActionEvent evt) {                                             
            // TODO add your handling code here:
            String destination = jComboBox1.getItemAt(0); // Problème numéro 1
            String bagage = jRadioButton1.getText(); // Problème numéro 2
            String typedepart = jComboBox4.getItemAt(1); // Problème numéro 3
            String typebagage = jCheckBox1.getText(); // Problème numéro 4
            
            
            String requete = "INSERT INTO  voyage (destination,bagage,type_depart,type_bagage) VALUES ('"+destination+"'','"+bagage+"','"+typedepart+"','"+typebagage+"')";
            
            try{
                stmt=maConnexion.ObtenirConnexion().createStatement();
                stmt.executeUpdate(requete);
                JOptionPane.showMessageDialog(null, "Enregistrement effectué avec succès");  
            }
            catch (SQLException ex){
                System.out.println(ex);
            }
        }                          
    Merci d'avance...

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Essaye avec cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            jComboBox1.getSelectedItem()
            jRadioButton1.isSelected()
            jCheckBox1.isSelected()
    Par ailleurs, intéresse-toi au PreparedStatement
    C'est un peu plus de travail que de concaténer un String pour en faire une requête SQL mais c'est beaucoup plus fiable (suppression des problèmes d'accents, apostrophes, etc.)
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Bonjour,

    je viens de tester avec ton bout de code et ça ne fonctionne pas...dommage

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    ça ne fonctionne pas
    Cela ne nous indique rien.
    Tu peux poster ton nouveau code et les erreurs produites ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Merci de m'avoir mis sur la voie, j'ai un peu creuser et ça fonctionne maintenant et voici la partie du code modifié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     String destination = (String) jCmbDest.getSelectedItem();
    cette fois les données sont bien insérés dans ma base de donnée et en voilà un de moins. J'ai un autre soucis, après soumission de mon form les données sont enregistrées dans la base ensuite effacées du form excepté les valeurs des listes déroulantes

  6. #6
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Citation Envoyé par Serge85 Voir le message
    J'ai un autre soucis, après soumission de mon form les données sont enregistrées dans la base ensuite effacées du form excepté les valeurs des listes déroulantes
    Elles ne s'effacent pas toutes seules. Il doit y avoir un bout de programme qui effectue la remise à zéro.
    Qu'est-ce que tu souhaites avoir après avoir enregistré les données ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Salut et encore merci pour ta disponibilité,


    voilà après soumission de mon form je souhaiterais avoir tous les champs vides et prêts à recevoir de nouvelles données. Pour les champs jTxtField c'est parfait mais je n'y arrive pas avec les jComboBox et jDateChooser. J'ai essayé ceci mais en vain:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jCmbDest.setSelectedItem("");
    . Je débute sous Netbeans et pas facile, si tu as un bon document ou tutorial sur Netbeans à me proposer je suis preneur et traitant de tout surtout de Netbeans et Base de données.

  8. #8
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Je débute sous Netbeans
    Ce n'est pas un problème NetBeans mais Java. C'est Java qu'il faut étudier pas NB !!!!
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  9. #9
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Par exemple pour désélectionner un JComboBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jCmbDest.setSelectedItem(-1);
    Il faut regarder dans la doc Java pas dans celle de NetBeans qui est juste l'outil (puissant) pour développer.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    desolé ça ne fonctionne pas mais je continue de chercher

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    A force de forger on devient forgeron, j'ai finalement resolu mon soucis et je partage la solution avec vous chers amis. comme j'ai eu à le dire plus haut, mon problème venait du fait qu'après insertion des données de mon formulaire dans la base de données, tous mes TxtField se vidaient excepté les jComboBox et jDateChooser, voici ce qu'il fallait juste fait:

    En lieu et place de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jCmbDest.setSelectedItem(-1);
    c'est plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jCmbDest.setSelectedIndex(0);
    et pour le champ date c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jDateVoyage.setDateFormatString("");
    Grand merci au Modérateur

  12. #12
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Attention, on ne peut pas supprimer la sélection d'une combo non éditable (et une combo est non éditable par défaut).

    Pour pouvoir le simuler, il faut ajouter dans les choix de la combo un item qui correspond à aucun choix (null, une chaîne vide, un texte du genre "Aucune sélection" (ou "jouer" avec le renderer).

    Exemple avec une JComboBox<String> et la valeur null pour simuler aucune sélection :

    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
    public static void main(String[] args) {
     
    		JFrame frame = new JFrame("Démo");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		JPanel panel = new JPanel(new GridBagLayout());
     
    		String[] comboItems = {null,"Item 1","Item 2","Item 3"};
    		JComboBox<String> combo = new JComboBox<>(comboItems);
     
    		combo.setSelectedItem(null); // aucune sélection par défaut
     
    		panel.add(combo);
     
    		frame.add(panel);
     
     
    		frame.setSize(300, 300);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
     
    	}
    Exemple avec une JComboBox avec renderer spécial :
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    public class JComboSelect {
     
    	private static final Color NO_SELECTION_COLOR = Color.LIGHT_GRAY;
     
     
    	public static void main(String[] args) {
     
    		JFrame frame = new JFrame("Démo");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		JPanel panel = new JPanel(new GridBagLayout());
     
    		Item[] comboItems = {null,new Item("Item 1",Color.RED),new Item("Item 2",Color.CYAN),new Item("Item 3",Color.GREEN)};
    		JComboBox<Item> combo = new JComboBox<>(comboItems);
     
    		combo.setRenderer(new ItemRenderer()); 
     
    		combo.setSelectedItem(null); // aucune sélection par défaut
     
    		panel.add(combo);
     
    		frame.add(panel);
     
     
    		frame.setSize(300, 300);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
     
    	} 
     
    	public static class ItemRenderer extends DefaultListCellRenderer {
     
    		@Override
    		public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected,
    				boolean cellHasFocus) {
     
    			Component component = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
     
    			if ( value instanceof Item ) {
    				Item item = (Item)value;
    				setText(item.getName());
    				setIcon(item.getIcon()); 
    			}
    			else {
    				setText("Pas de sélection");
    				setIcon(null);
    				if ( !isSelected ) {
    					setForeground(NO_SELECTION_COLOR);
    				}
    			}
     
    			return component;
     
    		}
     
    	}
     
    	public static class Item {
     
    		private Color color;
    		private String name;
    		private Icon icon;
     
    		public Item(String name, Color color) {
    			this.color=color;
    			this.name=name;
    			this.icon=JComboSelect.getIcon(color);
    		}
     
    		public String getName() {
    			return name;
    		}
     
    		public Color getColor() {
    			return color;
    		}
     
    		public Icon getIcon() {
    			return icon;
    		}
     
    	}
     
    	private static Map<Color, Icon> colorIcons = new HashMap<>();
    	public static Icon getIcon(Color color) {
    		Icon icon = colorIcons.get(color);
    		if ( icon==null ) {
    			BufferedImage image = new BufferedImage(16,16,BufferedImage.TYPE_INT_RGB);
    			Graphics2D g = image.createGraphics();
    			g.setColor(Color.BLACK);
    			g.drawRect(0, 0, 16, 16);
    			g.setColor(color);
    			g.fillRect(1, 1, 14, 14);
    			g.dispose();
    			icon = new ImageIcon(image);
    			colorIcons.put(color, icon);
    		}
    		return icon;
    	}
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 70
    Points : 54
    Points
    54
    Par défaut

    Pour pouvoir le simuler, il faut ajouter dans les choix de la combo un item qui correspond à aucun choix (null, une chaîne vide, un texte du genre "Aucune sélection" (ou "jouer" avec le renderer).
    Merci pour l'attention et je tiens à préciser que j'ai un item qui ne correspond à aucun choix

  14. #14
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Serge85 Voir le message
    Merci pour l'attention et je tiens à préciser que j'ai un item qui ne correspond à aucun choix
    Oui, et c'est ce dont je parlais. Sauf que tu fais jCmbDest.setSelectedIndex(0);, qui fonctionne parce que ton choix "aucun choix" est le premier de la liste.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. Deploiement avec base de données mysql
    Par Bakkach dans le forum VB.NET
    Réponses: 5
    Dernier message: 10/08/2019, 01h47
  2. Outil "TOAD" avec base de donnée MYSQL
    Par fano97one dans le forum Administration
    Réponses: 2
    Dernier message: 12/04/2012, 10h12
  3. Réponses: 2
    Dernier message: 14/01/2009, 09h48
  4. Demande d'aide sur la liaison avec base de données mysql
    Par almora007 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/08/2007, 14h19

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