Java para mi es un poco como una buena dieta: es saludable y te viene bien seguirla pero tiene esas pequeñas grandes cosas que te dan por el culo con todas las de la ley. El caso es que este año las pocas asignaturas que puedo considerar de informática real de mi carrera (Ing. en Informática, 4º curso) todas tienen prácticas/proyectos en Java, y en todos los casos todo está pensado para que uses Eclipse.
Pero no me gusta Eclipse. Bueno, miento, Eclipse tiene algunas grandes cosas, pero su antifacilidad para mover proyectos de un lado a otro, el plugin tipico para hacer interfaces de usuario (Jigloo), y su muchas veces no tan bueno sistema de perspectivas hace que al final para mi se convierta en una experiencia de amor/odio trabajar con él. Sobre todo si las aplicaciones son gráficas. Para aplicaciones de consola Eclipse hace mejor su papel, desde luego.
Así que como iba diciendo, no me gusta Eclipse y si miramos a la otra acera tenemos Netbeans, el entorno propio de Sun. Este entorno, no carente de sus propios problemas, soluciona parcialmente el tema de las UI (y es más amigable con mi preferencia total a no usar layouts, técnica que creo muy útil cuando no tienes un diseñador). Pero aún con todo, la herramienta que teóricamente debería facilitarte el trabajo al final te ralentiza y enfurece.
Soy plenamente consciente (por desgracia) que bastante parte de mi desdén hacia el diseño de UIs con Java es culpa de la propia API de Java, la cual esta pensada para los layouts, utiliza modelos en los componentes de datos sin ni siquiera hacer un par de métodos para las operaciones comunes (añadir y quitar un objeto del componente al menos). Ya prefiero no hablar, aunque no sea tema de UI, el que Date esté deprecado en contra de GregorianCalendar, punto típico para obtener la fecha actual.
Pero bueno, al lio. Uno de los proyectillos consiste en implementar con sockets un protocolo de control de paneles informativos en una ciudad, y el cliente requiere cuatro o cinco ventanas, la primera, la de login.

Diseñando la ventana de login
Bien, estoy en la situación bien representada aquí arriba y quiero meter los botones de Salir y de Entrar al sistema.

Colocando el botón donde yo quiero que esté el botón
Vale, me dispongo a poner el botón y al soltarlo en el sitio en el que quiero independientemente de las lineas guia que me muestra el editor, ocurre lo siguiente:

Vaya, como no ¬_¬
Vale, ya sabía lo que me iba a encontrar. Netbeans tiende a situar los controles creando dependencias entre ellos, de forma que en cuanto se mueve uno o se elimina o se pone otro al lado, te cambia toda la ventana. Ya independientemente de lo que se pueda hacer tuneando la configuración (y yo no he encontrado mucho), creo que está clara la problemática. Esta es una ventana mínima. Y cuando haces una interfaz compleja, es para morirse.
Al final, vale, la solución está en distanciar los componentes y colocarlos a mano cambiando las coordenadas. En ningún momento he dicho que no se pueda subsanar, pero ¿a caso el editor no tiene como misión facilitar al diseñador de UIs crearlas como quiere, fácil y rápidamente? Netbeans va por su versión 6, y este problema no es nuevo precisamente.
Otra cosa que me hace mucha gracia es cuando el IDE decide que no puedes cambiar su código fuente:

No importa cuanto pulses Enter…
A mi personalmente me gustan las llaves en la misma linea vertical. Cuando el código engorda facilita visualizar los bloques (independientemente del tabulado) y evita problemas de pasarse o quedarse corto en cierres. Ocupa más el código, pero yo lo prefiero así, vaya. Pues no hay cojones. Tengo prohibido editar el código de la interfaz a mano, aunque sea bajo mi propio riesgo (salvo en un editor externo xD)
Estas pequeñas cosas y otras muchas son las que hacen que me de pereza trabajar con Java. Porque al final en vez de poder preocuparme de lo que quiero hacer, tengo que preocuparme de los problemas que me da el IDE y de las rarezas de la API, y al final retrasarme por cosas que no deberían preocuparme. Y es una pena, porque Java es multiplataforma, completo, con facilidad de integración y con un montón de buenas características. A ver si Mono y Monodevelop mejoran (sobre todo el segundo, que todavía les falta el debugger y mejorar mucho el diseñador) y se lo ponen más duro a Java.