SwingWorker
Le SwingWorker est une classe de service populaire développée par le Sun Microsystems pour la bibliothèque de l'oscillation du langage de programmation de Java . permet l'utilisation appropriée de l'événement de expédiant le fil . En date du Java 6 , sont inclus dans le JRE .
Plusieurs incompatibles, officieux, des versions de SwingWorker ont été produits à partir de 1998 à 2006, et le soin doit être pris pour éviter la documentation abondante sur ces versions antidatant Java 6.
Utilisation dans Java 6.0
L'événement expédiant le problème de fil
SwingWorker est utile quand une tâche longue doit être effectuée après un événement d'utilisateur-interaction (par exemple, analysant un dossier énorme de XML, sur appuyer sur un bouton). La manière la plus franche de le faire est : document privé Doc. ; … Bouton de JButton = nouveau JButton (" ; Ouvrir XML" ;); button.addActionListener (nouvel ActionListener () { vide de public actionPerformed (ActionEvent e) { Doc. = loadXML () ; } }) ; Ceci fonctionnera, mais malheureusement, la méthode duloadXML () s'appellera dans le même fil que le fil principal d'oscillation, ainsi si la méthode a besoin d'heure d'exécuter, le GUI gèlera pendant ce temps.
Solution de SwingWorker
Ce problème n'est pas spécifique à Java, mais à terrain communal à beaucoup de modèles de GUI .SwingWorker proposent une manière de la résoudre en effectuant la tâche longue dans un autre fil de fond, maintenant le GUI sensible pendant ce temps. Création de l'ouvrier
Le code suivant définit le SwingWorker, qui encapsulent l'appel de méthode duloadXML () : Ouvrier de SwingWorker = nouveau SwingWorker
Exécution d'ouvrier
L'exécution s'appelle par l'utilisation méthode du .
Recherche du résultat
Le résultat peut être recherché en employant la méthode du . Pendant qu'appeler le dans le fil d'expédition d'événement bloque tous les événements, incluant peint, de l'traitement jusqu'à ce que la tâche accomplisse, une doit éviter de l'exécuter avant que que l'opération prolongée a fini. Il y a deux manières de rechercher le de résultat après l'accomplissement de tâche :
dépasser la méthode du . Cette méthode est invitée l'événement principal de expédiant le fil . document privé Doc. ; … Ouvrier de SwingWorker = nouveau SwingWorker
enregistrer un auditeur en employant la méthode du d'ouvrier. L'auditeur sera avisé des changements de l'état d'ouvrier. Accomplir l'exemple d'ouvrier
document privé Doc. ; … Bouton de JButton = nouveau JButton (" ; Ouvrir XML" ;); button.addActionListener (nouvel ActionListener () { vide de public actionPerformed (ActionEvent e) { SwingWorker Voir également
Oscillation de (Java)
Événement de expédiant le fil
BackgroundWorker , la classe équivalente du cadre du .
Random links: Groupe Chine de Volkswagen | Gel de cheveux | Athlétisme aux 2004 Jeux Olympiques d'été - femmes en hauteur | Liza Huber | Pionniers de Windows | SwingWorker