8
votes

JCOMBOBOX FOCUS ET MOUSE CLIQUE CLIQUE CLIQUE NON FONCTIONNÉE

Modifier
Downvoter, comment est-ce une mauvaise question? J'ai fourni un exemple d'exemple runnable du problème. Si cela fonctionne pour vous, laissez-moi savoir ou soulignez ce qui n'est pas clair.

Bonjour,
Dans le code ci-dessous qui a un seul jcommobox dans un jframe , je ne suis pas notifié lorsque la souris entre dans le jcommobox ou est cliqué sur ou se concentre gagnée . Cependant, le fichier popupmentaient fonctionne correctement.

Qu'est-ce que je fais mal? (Mon objectif est d'être alerté lorsque la composante texte du JCOMBOBOX est cliquée) xxx

merci!


0 commentaires

3 Réponses :


11
votes

Peut-être que le Downvoter a pris l'offensive à votre utilisation de NetBeans GUI Editor. Je n'aime pas moi moi-même, mais vous êtes invité à l'utiliser si vous constatez que vous pouvez réellement maintenir une interface graphique complexe avec elle. Personnellement, je la déteste en raison de divers bugs extrêmement gênants qui ne se montrent que lorsque vous essayez de modifier le formulaire et que vous perdez silencieusement vos paramètres de mise en page et de composants. Mais c'est à côté du point.

Quoi qu'il en soit, vous devez ajouter votre actionListener comme ceci: p>

jComboBox1.getEditor().getEditorComponent().addMouseListener(...);


2 commentaires

Bien utiliser Netbeans est une raison idiote d'être offensée. Quoi qu'il en soit, merci beaucoup d'avoir expliqué le bon endroit pour ajouter l'auditeur de souris. Fonctionne comme un charme!


: D Comme les ivrognes qui ont besoin d'une raison de boire, les ennemis trouveront toujours une raison.



0
votes

N'oubliez pas que Combobox est en réalité un conteneur. Donc, si vous voulez vraiment avoir tous les événements de la souris, vous devez ajouter l'auditeur à tous les composants qu'il contient.


public void addMouseListener(final MouseListener mouseListener) {
    this.comboBox.addMouseListener(mouseListener);

    final Component[] components = this.comboBox.getComponents();
    for(final Component component : components) {
        component.addMouseListener(mouseListener);
    }
    this.comboBox.getEditor().getEditorComponent().addMouseListener(mouseListener);
}


0 commentaires

1
votes

"Mon objectif est d'être alerté lorsque le composant texte du JCOMBOBOX est cliqué sur"

Ceci peut être réalisé en ajoutant la mise au point de FocusListener à la composante JTextfield sous-jacente de JCOMBOBOX qui réagira comme prévu pour obtenir et perte de focalisation de la Combobox. P>

Component component = comboBox.getEditor().getEditorComponent();  
if (component instanceof JTextField){
 JTextField txtFiled = (JTextField) borderless;
 txtFiled.addFocusListener(new FocusListener() 
 {
   public void focusGained(FocusEvent e) 
   {
     //To Do Focus Gained
   }
   public void focusLost(FocusEvent e) 
   {
     //To Do Focus Lost
   }
 });
}


1 commentaires

Pouvez-vous me dire ce qui est sans frontière?