2010-12-08 10 views
1

Quelqu'un peut-il me signaler dans le droit direct à cela? Je veux que l'actionlistener dans une applet affiche 1 des 3 paramètres dans un jlabel récupéré du fichier html, quand l'option appropriée est choisie d'une zone de liste déroulante.java aide applet action écouteur

Vive

Répondre

0

Pour une zone de liste déroulante vous souhaitez ajouter un ItemListener à votre zone de liste déroulante pour gérer le changement. Vous devez créer une sorte de classe de contrôleur (juste une classe régulière implements ItemListener) et l'ajouter comme écouteur. Ensuite, dans la méthode itemStateChanged, vous programmez votre logique. Vous voulez probablement donner le ItemListener vous créez une référence à votre panneau afin qu'il puisse faire les changements appropriés.

Une autre note. Si vous lisez le fichier HTML à la volée lorsque la liste déroulante est sélectionnée, l'interface utilisateur se bloque jusqu'à ce que cette opération soit terminée. Cela est dû au fait que ces événements sont déclenchés et exécutés sur le thread Dispatch d'événement, le thread principal de l'interaction de l'utilisateur. Pour éviter cela, vous pouvez soit analyser le fichier HTML à l'avance dans la mémoire ou vous pouvez générer un thread distinct dans l'événement itemStateChanged pour analyser le fichier HTML. Rappelez-vous simplement, lorsque vous avez terminé, d'utiliser SwingUtilities.invokeLater pour obtenir un autre exécutable sur le thread d'envoi d'événement pour mettre à jour le menu déroulant. Toutes les mises à jour de l'interface utilisateur Swing doivent être effectuées à partir du fil d'expédition des événements.

+0

Si j'utilise l'écouteur itemStateChanged, que dois-je taper en dessous? if (studentComboBox.getSelectedItem(). est égal à ("student1")) { Label = new JLabel (s); Public void run() { Chaîne s = getParameter ("student1"); –

+0

Vous voulez réellement utiliser le 'ItemEvent' qui a été passé à la méthode' itemStateChanged'. 'ItemEvent.getItem()' obtiendra l'article en question. 'ItemEvent.getStateChanged()' vous indiquera s'il a été sélectionné ou désélectionné. Deux événements se déclenchent lorsque le menu déroulant est modifié, le premier pour "désélectionner" l'ancienne sélection et le second pour "sélectionner" la nouvelle sélection. En ce qui concerne le 'JLabel', vous voulez probablement le créer et le cacher quand vous faites le panneau. Ensuite, vous pouvez appeler 'setText()' et 'setVisible (true)' lorsque la liste déroulante est sélectionnée. –