Bonjour, Qu'est-ce que je fais mal? (Mon objectif est d'être alerté lorsque la composante texte du JCOMBOBOX est cliquée) p> merci! P> p>
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. Em>
Dans le code ci-dessous qui a un seul jcommobox code> dans un
jframe code>, je ne suis pas notifié lorsque la souris entre dans le
jcommobox code> ou est cliqué sur ou se concentre gagnée . Cependant, le fichier popupmentaient
code> fonctionne correctement. P>
3 Réponses :
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(...);
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.
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); }
"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 } }); }
Pouvez-vous me dire ce qui est sans frontière?