he hecho un componente encargo (derivada de JComponent) que representa un arrastrable Bezier curva.
(se parece a un cable que cuelga, alguien podría saber que de Bender o Cubase)¿Cómo puedo repintar de manera eficiente cuando uso un gran componente personalizado en Swing?
Mi problema es: La curva puede convertirse muy largo, digamos desde la parte superior izquierda a esquinas inferior derecha de la escritorio.
Esto hace que la oscilación repinte funcionalidad ineficiente: El área de la curva es quizás unos cientos de píxeles, pero el área de el componente (siendo en su mayoría 'transparente') es millones de píxeles grandes.
Mi impresión es sometimiento:
Cuanto más larga sea la curva, más de parpadeo cuando me sale arrastrándolo.
Espero haber aclarado el problema.
Quizás ayudaría cuando alguna manera pudiera elegir por mí mismo, qué regiones del componente necesita volver a pintar en absoluto.
EDIT:
Tal lío! Estoy perfilando la aplicación usando Netbeans, que ayuda a a encontrar el código ineficiente normalmente, pero este marco Swing está haciendo cientos de llamadas anidadas. Simplemente no puedo entender, qué es lento y por qué.
Por cierto, deshabilitar super.paint(...)
o super.paintComponent(...)
no ayuda.
Lo negrita extraña que haya que hacer allí. – Malfist
¿Puedes publicar tu método paintComponent? Esto podría ayudarnos a encontrar problemas concretos y sugerir buenas soluciones. –