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 :

Afficher le nom de la variable name d'un objet Combobox dans une autre classe


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 15
    Par défaut Afficher le nom de la variable name d'un objet Combobox dans une autre classe
    Bonjour à tous,
    j'ai une classe dans laquelle il y a un comboBox déclaré comme : cb_tesst = new javax.swing.JComboBox();
    je le passe en paramètre dans une fonction appartenant à une autre classe comme suit : class_B.decor(cb_tesst);
    Question: Comment puis-je faire dans la fonction decor je peux vérifier que le comboBox passé en paramètre est égal à "cb_tesst".

    Merci pour votre aide.

  2. #2
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il est impossible d'obtenir (et donc d'afficher) les noms de variables pendant l'exécution du code. Tu peux évidemment tester si la référence de la combo est bien la bonne, mais ça t'obligerait à complexifier inutilement le code, et surtout ajouter des dépendances inutiles entre les classes.
    C'est quoi au juste le besoin ? Si c'est pour vérifier que ton code fonctionne comme tu veux, utilise le mode debug.
    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.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 15
    Par défaut
    Bonjour et Merci de votre réponse.
    Mais voici une astuce que je viens d'utiliser pour résoudre le problème que j'avais:
    dans la classe B je vérifie avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(class_A.cb_tesst.getEditor().getEditorComponent().equals(this.comboBox.getEditor().getEditorComponent()))
    Merci et bonne année!!!

  4. #4
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Une bidouille plutôt qu'une astuce. Je ne vois pas pourquoi tu aurais de faire une bidouille comme ça. Déjà, si c'est la classe class_A (à ce propos, merci de respecter les conventions de nommage) qui a besoin de manipuler la combo, pourquoi ce n'est pas elle qui l'a créé et donc la connait, surtout qu'en plus ça t'oblige à avoir accès à l'attribut directement (j'espère que ce n'est pas un attribut static en plus). Ensuite, le fait d'accèder à l'instance d'EditorComponent à un si haut niveau indique qu'il y a problement un problème d'architecture. Et sinon, pourquoi ne pas faire l'égalité directe : class_A.cb_tesst==this.comboBox; juste histoire d'en écrire des kilomètres...
    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.

  5. #5
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 15
    Par défaut
    Bonjour Joel,
    C'est peut être vrai que c'est une bidouille, mais voilà le problème j'utilisais les classes de l'autocompletion "org.jdesktop.swingx.autocompolete" seulement que je n'arrivais pas à faire le test du combobox qui vient de predre son focus en vue d'exécuter une ou l'autre fonction. Ainsi la partie où on a implémenté le void focusLost() c'est dans une fonction déclarée comme ceci:
    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
    public static void decorate(JTextComponent textComponent, AutoCompleteDocument document, final AbstractAutoCompleteAdaptor adaptor){
     textComponent.addFocusListener(new AutoCompleteFocusAdapter() {
                public void focusGained(FocusEvent e) {
                    adaptor.markEntireText();
                }
                public void focusLost(FocusEvent e){
    //Ceci est mon ajout pour faire le test
    //Vu que je n'ai pas de combobox ici mais un textComponent
                    if(Class_A.cb_tesst.getEditor().getEditorComponent().equals(textComponent)){
     
                        System.out.println("C'est vrai");
                    }
                    if(Class_A.cb_tesst2.getEditor().getEditorComponent().equals(textComponent)){
                        System.out.println("C'est vrai2");
                    }
                }
            }
    Selon toi comment pourrais-je contourner ce problème?

    Bien à toi.

  6. #6
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Tu ajoutes ton propre écouteur sur l'éditeur de la combo.

    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
    public class DemoAutocomplete {
     
    	private static final Insets INSETS = new Insets(2,2,2,2);
     
    	public static void main(String[] args) {
     
    		JFrame frame = new JFrame("Choix des instruments de musique");
     
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
     
    		JPanel panel = new JPanel(new GridBagLayout());
    		createCombo(panel, 0, "Nom", "Anne", "Annatole", "Aude", "Annie", "Jean", "Jeanne", "Emma", "Émeline", "Jean-Paul", "Pauline", "Jean-Pierre", "Paul", "Pierre","Pamela","Éric");
    		createCombo(panel, 1, "Instrument", "Guitare", "Piano", "Saxophone", "Accordéon", "Balafon", "Biniou", "Banjo", "Violon", "Violoncelle", "Vielle", "Cor", "Clairon", "Clarinette", "Clavecin", "Cornemuse","Sitar","Harpe","Hautbois");
     
    		frame.add(panel);
     
    		frame.setSize(400, 400);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
    	}
     
    	@SafeVarargs
    	private static Component createCombo(JPanel panel, int line, String id, String...data) {
    		final Collator collator = Collator.getInstance(); 
    		Arrays.sort(data, (a,b)->collator.compare(a, b));
    		final JLabel label = new JLabel(id+" :");
    		panel.add(label, new GridBagConstraints(0, line, 1, 1, 0, 0, GridBagConstraints.EAST, GridBagConstraints.NONE, INSETS, 0,0));
    		final JComboBox<String> comboBox = new JComboBox<>(data);
    		AutoCompleteDecorator.decorate(comboBox, new ObjectToStringConverter() {
     
    			@Override
    			public String getPreferredStringForItem(Object paramObject) {
    				return String.valueOf(paramObject);
    			}
    		});
                    // on ajoute un écouteur de focus
    		comboBox.getEditor().getEditorComponent().addFocusListener(new FocusAdapter() {
    			@Override
    			public void focusLost(FocusEvent e) {
    				System.out.println("Perte du focus de la combo " + id);
    			}
    		});
    		panel.add(comboBox, new GridBagConstraints(1, line, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, INSETS, 0,0));
    		return comboBox;
    	}
     
    }
    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. Association Button à une variable dans une autre classe
    Par zaina22 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 08/11/2011, 11h01
  2. Ecrasement des valeurs après le transfert de la variable dans une autre classe.
    Par patriot dans le forum Développement Mobile en Java
    Réponses: 0
    Dernier message: 13/05/2011, 11h39
  3. comment récupérer une variable dans une autre classe java
    Par realiste dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 19/04/2011, 19h23
  4. utilisation d'une variable d'une class dans une autre class
    Par the watcher dans le forum Langage
    Réponses: 7
    Dernier message: 31/08/2010, 14h01

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