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

EDT/SwingWorker Java Discussion :

erreur compilation sur un JTabbedPane


Sujet :

EDT/SwingWorker Java

  1. #1
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut erreur compilation sur un JTabbedPane
    j'aimerai déclencher une action quand je clique sur un onglet d'un JTabbedPane


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    JTabbedPane tabbedPane = new JTabbedPane();
    JPanel ongletPanel = new JPanel();
    tabbedPane.addTab("onglet", ongletPanel);
    ongletPanel.addActionListener (this) ;    // error: cannot find symbol
    mais le compilateur ne reconnait pas la méthode sur ce composant

    bien-sûr elle fonctionne sur un bouton

    j'utilise openjdk11 sur linux

  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 : 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
    Salut,

    En effet, il n'y a pas de méthode addActionListener dans la classe JPanel, parce qu'elle n'émet pas d'évènement ActionEvent. Un JPanel n'est pas un composant d'action (comme un bouton par exemple), mais un composant de vue.

    Tout dépend maintenant de ce que tu veux faire exactement. Si c'est de la sélection d'onglet, normalement on clique sur l'étiquette de l'onglet pour changer d'onglet (difficile de faire ça en cliquant sur le composant, vu qu'il n'est pas affiché puisque c'est ce qu'on cherche à faire). Tout est déjà cablé pour ça et tu n'as pas besoin d'installer des écouteurs.
    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
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    merci de votre réponse

    je voulais faire des contrôles préalables en cliquant sur cet onglet

    certes le panel de cet onglet contient des jtextfields et un bouton de validation qui n'est appuyé qu'après
    avoir rempli les champs

    faire les contrôles préalables avec ce bouton me semblait tardif

  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 : 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
    Donc ce n'est pas sur une action sur l'onglet que tu veux faire tes contrôles.

    Options :

    1. Les contrôles doivent être fait au moment où l'onglet est sélectionné (donc affiché).
      Il faut utiliser un ChangeListener. Par exemple, pour afficher le numéro d'onglet sélectionné :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      tabbedPane.addChangeListener(new ChangeListener() {
              public void stateChanged(ChangeEvent e) {
                  System.out.println("Tab: " + tabbedPane.getSelectedIndex());
              }
       });
      Dans ton cas, tu pourrais par exemple écrire :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      JTabbedPane tabbedPane = new JTabbedPane();
      JPanel ongletPanel = new JPanel();
      tabbedPane.addTab("onglet", ongletPanel);
      tabbedPane.addChangeListener(new ChangeListener() {
              public void stateChanged(ChangeEvent e) {
                    if ( tabbedPane.getSelectedComponent()==ongletPanel ) {
                         // faire les contrôles...
                    }
              }
       });
      Attention, ça ne se fait qu'au changement d'onglet : le premier affichage ne compte pas comme changement d'onglet. Il te faut simplement appeler une méthode qui fait le contrôle après le peuplement de l'onglet.
    2. Les contrôles sont fait lors de la saisie dans les champs de saisie (ou équivalents)

      • Les contrôles peuvent être faits lors du changement de champ (lorsqu'on appuie la touche tab ou entrée)
        Pour ça, utilise un ActionListener sur chaque champ.
      • Il existe un système spécifique pour la validation de champ, avec la classe javax.swing.InputVerifier. Tu verras un exemple dans la javadoc.
      • On peut effectuer la validation durant la saisie, au fur et à mesure de la frappe, en utilisant un javax.swing.event.DocumentListener.
      • On peut effectuer la validation durant la saisie tout en modifiant la saisie, en utilisant un javax.swing.text.DocumentFilter.
      • Il existe également un composant qui formate la saisie (JFormattedTextField), et d'autres qui sont plus adaptés pour certains types de valeurs, rendant la validation inutile (comme JSpinner (pour les nombres et les dates), JComboBox et/ou JRadioButton (pour une liste de valeurs), et d'autres dans des bibliothèques externes (comme un date picker par exemple), etc.)



    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
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    merci

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

Discussions similaires

  1. [AC-2003] Erreur Compilation sur code
    Par Aladin_23 dans le forum VBA Access
    Réponses: 3
    Dernier message: 14/10/2011, 14h25
  2. Erreur compilation sur .jar
    Par Macao35 dans le forum Exécution et industrialisation
    Réponses: 1
    Dernier message: 10/10/2011, 12h38
  3. Réponses: 11
    Dernier message: 17/09/2011, 18h25
  4. erreure compilation sur GetCharacterPlacement
    Par realkilla dans le forum Langage
    Réponses: 2
    Dernier message: 23/01/2009, 10h28
  5. Delphi 7 update 1 - Erreur de compil sur SQLExpr
    Par RamDevTeam dans le forum Bases de données
    Réponses: 14
    Dernier message: 02/11/2005, 18h44

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