fillers borderlayout java swing grouping

borderlayout - swing fillers java



¿Existe un equivalente de "Group Box" en Java Swing? (6)

Aquí hay una cita de los javadocs de JRadioButton desde que sacó los botones de radio.

Una implementación de un botón de opción: un elemento que se puede seleccionar o deseleccionar, y que muestra su estado al usuario. Se usa con un objeto ButtonGroup para crear un grupo de botones en el que solo se puede seleccionar un botón a la vez. (Cree un objeto ButtonGroup y use su método add para incluir los objetos JRadioButton en el grupo).

Nota: El objeto ButtonGroup es una agrupación lógica, no una agrupación física. Para crear un panel de botones, aún debe crear un JPanel u objeto-contenedor similar y agregarle un Borde para desconectarlo de los componentes circundantes.

Intentando construir una aplicación GUI en Java / Swing. Estoy principalmente acostumbrado a "pintar" GUI en el lado de Windows con herramientas como VB (o para ser más precisos, Gupta SQLWindows ... me pregunto cuántas personas saben qué es eso ;-)).

No puedo encontrar un equivalente de un cuadro de grupo en Swing ...

Con un cuadro de grupo, tiene un recuadro cuadrado (generalmente con un título) alrededor de un par de widgets relacionados. Un ejemplo es un cuadro de grupo alrededor de unos botones de radio (con el título que explica de qué se tratan los botones de opción, por ejemplo, cuadro de grupo titulado "Sexo" con botones de opción "Hombre" y "Mujer").

He buscado un poco ... la única forma que encontré fue agregar un subpanel, establecer el borde en el subpanel y luego agregar todos los widgets en el "grupo" al subpanel. ¿Hay una manera más elegante de hacer eso?


Crea un JPanel y agrega tus botones de radio a él. No se olvide de configurar el diseño de JPanel en algo apropiado.

Luego llame a panel.setBorder(BorderFactory.createTitledBorder(name));


No AFAIK, al menos no con widgets de swing estándar.

En VB tiene un widget de grupo, que es esencialmente un panel + borde.

En Swing tienes un JPanel que es el widget de contenedor, y creas y configuras un objeto de borde solo si lo necesitas. Se puede argumentar que de una manera más elegante ya que no se paga por algo que no se usa (por ejemplo, borde)


Otros ya han comentado sobre JPanel y usando TitledBorder, está bien.

Sin embargo, al jugar con Swing LayoutManagers, puede resultar molesto que los componentes en diferentes JPanels no se puedan alinear correctamente (cada panel tiene su propio LayoutManager).

Por esta razón, es una buena práctica (ver "JGoodies" en la web para más detalles) en las GUI Swing para NO usar TitledBorders, sino separar los grupos de componentes en un JPanel por un JLabel seguido de un JSeparator horizontal.

Árbitro. " Primeros auxilios para Swing "


Respondo basándome en el comentario de Uri que explica lo que significaba el OP por Group Box :

Uri: Creo que se refiere al grupo de control que ves en muchos cuadros de diálogo, donde tienes un cuadrado alrededor de un montón de widgets, como botones de opción, por ejemplo.

Hasta donde yo sé, cada JComponent puede establecer un borde para sí mismo, por lo que no necesita un segundo panel.


Un cuadro de grupo es simplemente un conjunto de ''widgets agrupados lógicamente''. Esto en el mundo de swing es un JPanel .

Agregue sus widgets a un JPanel .

Establezca su tipo de borde en ''Titulated Border'' y dé el título, igual que el nombre del ''frame'' de VB6.

Voila. Usted tiene su cuadro de grupo.