Maison >Java >javaDidacticiel >Pourquoi mon application JAR Bundler est-elle en retard ou s'arrête-t-elle lors de l'utilisation d'OSXAdapter ?

Pourquoi mon application JAR Bundler est-elle en retard ou s'arrête-t-elle lors de l'utilisation d'OSXAdapter ?

DDD
DDDoriginal
2024-11-24 22:33:12770parcourir

Why is my JAR Bundler application lagging or terminating when using OSXAdapter?

JAR Bundler utilisant OSXAdapter provoquant un retard ou une fermeture de l'application

Cette question découle de la nécessité d'associer un fichier JAR à un type de fichier spécifique (.jarbundlerproblem) à l'aide de Jar Bundler d'Apple pour OS X. De plus, l'application nécessite la capacité de gérer les fichiers sur lesquels on double-clique et qui sont transmis en tant que arguments.

Pour y parvenir, le développeur a utilisé la bibliothèque OSXAdapter pour gérer les événements liés aux fichiers. Cependant, cette modification a conduit à un comportement incohérent dans l'application. Parfois, il ne s'ouvre pas ou affiche une fenêtre vide pendant une période prolongée.

Analyse et solution :

Le problème vient du potentiel de l'application à bloquer l'événement thread de répartition (EDT) en raison de l'utilisation de 'Thread.sleep()' dans la méthode 'doWork()'. Cela peut empêcher l'interface graphique de répondre pleinement ou même entraîner un retard ou une fermeture de l'application.

Approche recommandée :

Pour résoudre ce problème, il est recommandé de utilisez un SwingWorker ou implémentez l'interface « Runnable » pour effectuer la tâche fastidieuse dans un thread séparé. Cela libérera l'EDT, permettant à l'interface graphique de rester réactive.

Approches alternatives pour JTable à défilement automatique :

  • Utilisez la classe 'SwingWorker', qui appelle automatiquement 'process()' et met à jour le modèle sur l'EDT.
  • Utilisez le Méthode 'invokeLater()' pour invoquer la mise à jour du modèle sur l'EDT.

Notes supplémentaires :

  • Il est suggéré d'utiliser une approche alternative pour construire un bundle d'applications Mac OS sans compter sur JAR Bundler.
  • L'extrait de code fourni dans la réponse montre comment ajoutez des lignes à une JTable et maintenez le comportement de défilement automatique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn