Una buena práctica conocida es evitar la subclasificación de contenedores de nivel superior (JFrame
, JDialog
, JInternalFrame
).
En cuanto JPanel
, varias prácticas están en uso:
- subclase para todas las vistas (a continuación, añadir todos los componentes dentro del constructor de la subclase )
- crear un ViewBuilder (para cada especie of view) que agrega dinámicamente componentes a un "estándar"
JPanel
Generalmente utilizo la primera opción, que me parece más lógica, pero también uso la segunda vía, con cierto nivel de adaptación: mi generador de vistas realmente crea y almacena (como campos) todos los componentes pero agrega a un panel existente (pasado como argumento).
Por ejemplo, lo uso para reutilizar conjuntos de componentes: p. Tengo una clase AddressView
que funciona de esa manera y lo añado dos veces a un ContactView
que JPanel
subclases, una vez para domicilio, una vez dirección de la oficina .
Se puede decir que también pude establecer la subclase JPanel
para y luego agregar 2 instancias a mi panel ContactView
. La razón por la que no hago eso es porque Swing LayoutManager
s no admite la alineación de componentes en diferentes paneles, por lo que el panel ContactView resultante no es visualmente agradable en este caso.
Esta pregunta es similar a la que deben utilizar las clases anónimas o debería nómbrelos -> no hay correcto o incorrecto. – rurouni