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 :

Forward d'évennements vers une combobox


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 151
    Par défaut Forward d'évennements vers une combobox
    Bonjour,

    J'ai besoin de forwarder des évènements MouseEvent (mouse click) à une JComboBox pour qu'au final, la combobox ouvre son drop down menu. J'ai tenté ce morceau de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    combobox.dispatchEvent((MouseEvent) SwingUtilities.convertMouseEvent(table, e, combobox));
    Le MouseEvent provient d'une JTable. J'ai cette exception qui se lance lors du clique (l'erreur provient de la ligne de code énoncée plus haut) :
    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
    Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location
        at java.awt.Component.getLocationOnScreen_NoTreeLock(Component.java:1943)
        at java.awt.Component.getLocationOnScreen(Component.java:1917)
        at javax.swing.JPopupMenu.show(JPopupMenu.java:887)
        at javax.swing.plaf.basic.BasicComboPopup.show(BasicComboPopup.java:191)
        at javax.swing.plaf.basic.BasicComboPopup.togglePopup(BasicComboPopup.java:1110)
        at javax.swing.plaf.basic.BasicComboPopup$Handler.mousePressed(BasicComboPopup.java:807)
        at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:263)
        at java.awt.Component.processMouseEvent(Component.java:6260)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at ...
    J'utilise le même procédé pour un bouton et ça marche bien. Ma combobox est bien remplie et visible. J'ai bien tenté un getComponentPopupMenu().setVisible(true) sur la combobox et un repaint() mais rien n'y fait..

    Qu'est ce que je fais de mal ? Merci d'avance.

  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
    Le but est d'utiliser un JComboBox dans une JTable?

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pourquoi tu n'appelle pas directement combobox.showPopup() ?

    edit: +1 les JComboBox ne sont pas utilisables comme composant d'affichage ou d'édition d'un JTable, c'est parce que le code fait un gros usage des SwingUtilities.InvokeLater , hors JTable attends des composant qui sont entièrement redessinés à la fin de l'appel.
    Vu ton message je parie que nulle part tu n'a fait un parent.add(comboBox), avec parent lui même visible. Dans ce cas, la combobox n'est pas visible (pour être visible, toute sa chaien de parent doit l'être et elle doit être rattachée à un Conteneur de type Frame.)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 151
    Par défaut
    pourquoi tu n'appelle pas directement combobox.showPopup() ?
    j'ai le même problème avec cette méthode.

    Effectivement, j'essayais d'ajouter une JComboBox à une JTable.

    Je comprends mieux grâce à vos commentaires. La méthode utilisée n'était pas la bonne. Je passe maintenant par un DefaultCellEditor et ça va tout de suite mieux

    Merci pour vos explications !

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

Discussions similaires

  1. forwarder une erreur d'un servlet vers une error.jsp
    Par jakouz dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 14/12/2006, 16h09
  2. [Taglib] forward vers une jsp
    Par bastouffe dans le forum Struts 1
    Réponses: 2
    Dernier message: 08/12/2006, 08h52
  3. Une Combobox, qui redirige vers une Feuille
    Par Didpa dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/11/2006, 11h42
  4. global-forward vers une definition Tiles
    Par ArithmeticException dans le forum Struts 1
    Réponses: 1
    Dernier message: 17/09/2006, 22h03
  5. enregistrements d'une colonne de table vers une combobox ?
    Par gregcat dans le forum Bases de données
    Réponses: 4
    Dernier message: 30/01/2006, 09h57

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