Para un proyecto escolar, necesito hacer una aplicación de pintura simple que pueda dibujar líneas, óvalos y rectángulos.Swing: botones de alternar enlaces junto con un grupo de botones, junto con los elementos de menú correspondientes
La asignación especifica que necesito botones de la barra de herramientas y elementos del menú para cada tipo de forma.
Me gustaría ir un poco más allá, al hacer que los botones JToggleButtons
en la barra de herramientas y los elementos de menú JRadioButtonMenuItems
. Además, lo quiero para que cuando seleccione uno de los botones de la barra de herramientas, anule la selección de los otros, seleccione el elemento de menú apropiado y deseleccione los otros elementos del menú. Lo mismo para seleccionar uno de los elementos del menú.
Sé que puedo agrupar cualquier AbstractButton
con un ButtonGroup
, pero no estoy seguro de si este es el camino correcto, porque aunque maneja un "grupo" de botones muy bien, no estoy seguro de que pueda manejar dos grupos paralelos.
Hacerlo sin ButtonGroup
significaría que en cada uno de los 6 detectores de eventos tendría que anular manualmente la selección de los otros botones, y cada par llamaría al mismo código para establecer el tipo de forma.
También podría hacer dos ButtonGroup
s, uno para el menú, uno para la barra de herramientas, pero luego también tengo que duplicar el código de configuración del tipo de forma.
En cualquier situación, también corro el riesgo de que el menú establezca un botón que establece un elemento de menú que establece un botón, ad infintum.
¿Cuál es la mejor manera de abordar este problema?
(puntos de bonificación para ser capaz de resolver el problema con el diseñador de interfaz gráfica de usuario Netbeans, es sólo más fácil)
Puntos de bonificación por hacerlo sin un diseñador de GUI. Pasas tu tiempo aprendiendo Java que es portátil, en lugar del IDE que no lo es. – camickr
@camickr - De hecho, prefiero usar Textmate y el terminal a través de un IDE, es solo que el diseñador de GUI hace que las cosas vayan * SO * mucho más rápido. Mi punto era que prefería resolverlo en el diseñador y ver cómo lo hacía, que lidiar con la edición del código generado automáticamente y pasar horas averiguando por qué las cosas pequeñas no funcionan. –