Pues, a falta de una idea mejor sobre cómo mejorar mis UI, y recordando que uno de los motivos que me impulsó a probar NetBeans había sido un vídeo de cómo funcionaba su GUI, esta mañana he buscado dicho tutorial, y he dado una oportunidad al editor de interfaces.
Hace un buen trabajo, aunque parte del buen trabajo lo hace el Layout de Swing que utiliza, pero no le resta mérito a lo cómodo que te hace construir un interface básico. Tiene lo propio, el editor de propiedades que se hace un poco raro en ocasiones, y el generador de métodos para gestionar eventos.
Sus manías y las mías.
Es un generador de código bastante limpio, en el constructor de tu clase introduce una llamada a su función para inicializar componentes, al viejo estilo del JBuilder 4, y pone sus declaraciones de variables al final de la página, todo muy limpio. Además, bloque las líneas que ha escrito él para que no puedas modificarlas, y ahí es dónde tenemos nuestro primer encontronazo.
A pesar de todo lo limpio que es, y probablemente me acostumbre a trabajar así, mi primer instinto ha sido hacer AppUI (con Matisse) y App extends AppUI (con mis manitas) pretendiendo que Matisse manejase sus cosas en su clase, y yo manejase las mías en mi clase (gestión de eventos, rellenado de controles, etc). ¿Qué sucede? Pues que Matisse declara sus objetos como private, y como bloque las líneas para que no puedas modificarlas … claro! a lo mejor es lo correcto, filosóficamente, y no es que no hayan alternativas, podría hacerme métodos get para acceder a esos objetos (JLabel, JList, etc), o podría implementar la lógica de lo que quiero hacer con ellos dentro de esa clase, pero precisamente lo que me gustaría evitar es que ambos toquemos el mismo fichero, aunque insisto, es muy limpio y respetuoso, pero no entiendo porqué no me deja modificar el acceso a esas variables. Hombre, que en el fondo es mi código, dejaré de poder hacer con él lo que quiera!?.
En todo caso, muy recomendable. Aunque de todos modos, habrá que seguir intentando aprender a manejarse bien con los Layout (y demás conceptos relacionados) puesto que aún quedan muchos recodos dónde pueden ser interesantes, por ejemplo si implementas tu propio XxxCellRenderer.