Il y a deux optimisations principales que vous pouvez faire ici. La première consiste à s'assurer que lorsque vous faites repeindre votre interface utilisateur, généralement en appelant repaint, veillez à appeler la version de repaint où vous spécifiez un rectangle qui a changé. Seulement rendre le rectangle assez grand pour englober les parties qui ont réellement changé, pas les parties statiques. Pour que ce soit efficace, vous devez également faire attention à la clipRect dans l'objet Graphics2D que vous avez passé dans paint(). Cela est utilisé par le système pour vous dire exactement ce qui doit être repeint, dans le cas ci-dessus habituellement le rectangle que vous avez passé à repeindre. Ne peignez rien qui se trouve entièrement à l'extérieur de ce rectangle.
Vous pouvez également obtenir des améliorations significatives des performances en mettant en cache les parties statiques de votre interface dans une image. Ecrire une image est de loin le moyen le plus rapide d'afficher les choses sur un écran. Mes mesures indiquent que les petites images sont plus rapides que même quelques primitives de dessin simples. Cependant, vous devez vous assurer que les caractéristiques de l'image correspondent à l'écran, en utilisant createCompatibleImage().
Bien sûr, vous utilisez peut-être beaucoup de mémoire pour obtenir cette accélération. Je recommanderais de tester si vous avez besoin de faire de la mise en cache d'image avant de l'implémenter.
Je suis entièrement sûr, donc je ne donne pas cela comme une réponse. Je pense que vous pouvez juste remplacer la méthode paint() et ne dessiner que les éléments mis à jour, mais cela vous demandera de savoir ce qui doit être repeint tout le temps.Si vous voulez juste accélérer les choses. Peut-être jeter un oeil à ceci: http://java.sun.com/docs/books/tutorial/extra/fullscreen/doublebuf.html – Viele
quand vous dites «je dessine l'interface utilisateur entière à partir de rien» où faites-vous cela? Avez-vous un seul composant JComponent personnalisé ou avez-vous un JFrame avec de nombreux composants personnalisés? – Justin