Jpanel
Estudiando BoxLayout y GUI en general. Quiero colocar un panel en un marco. Más tarde añadiré un panel idéntico y probaré BoxLaoyout. Pero no puedo entender por qué este código no produce un panel de tamaño 200×400 sino sólo un punto rojo en el centro del lado izquierdo del marco (con coordenadas alrededor de (300,0)).
El gestor de diseño (BoxLayout) está utilizando el tamaño preferido de los componentes del contenedor que está gestionando. Por defecto, el tamaño preferido de un JPanel vacío es 0x0, añadir el borde ha producido un tamaño preferido más cercano a 2×2
¿Qué es BoxLayout en Java?
public class BoxLayout extends Object implements LayoutManager2, Serializable. Un gestor de diseño que permite la disposición de múltiples componentes tanto vertical como horizontalmente. Los componentes no se envolverán, por lo que, por ejemplo, una disposición vertical de componentes se mantendrá verticalmente cuando se cambie el tamaño del marco.
¿Cómo se especifica la orientación de un BoxLayout?
Basta con sustituir X por Y, altura por anchura, y así sucesivamente. Nota de la versión: Antes de la versión 1.4 del JDK, no existían constantes para especificar el eje del diseño de la caja de forma localizable. En su lugar, se especificaba X_AXIS (de izquierda a derecha) o Y_AXIS (de arriba a abajo) al crear el BoxLayout .
Cómo hacer una cuadrícula en java
Los gestores de diseño se utilizan para decidir automáticamente la posición y el tamaño de los componentes añadidos. En ausencia de un gestor de diseño, la posición y el tamaño de los componentes deben establecerse manualmente. El método setBounds() se utiliza en esta situación para establecer la posición y el tamaño. Para especificar la posición y el tamaño de los componentes manualmente, el gestor de diseño del marco puede ser null.setBounds()El método setBounds() necesita cuatro argumentos. Los dos primeros argumentos son las coordenadas x e y de la esquina superior izquierda
del componente, el tercer argumento es la anchura del componente y el cuarto argumento es la altura del componente.SintaxissetBounds(int coordenada x, int coordenada y, int anchura, int altura)Ejemploimportar javax.swing.*;
Gridlayout java
En realidad, la API para BoxLayout dice – “BoxLayout intenta organizar los componentes a sus anchos preferidos (para la disposición de izquierda a derecha) o alturas (para la disposición de arriba a abajo). Para una disposición de izquierda a derecha, si no todos los componentes tienen la misma altura, BoxLayout intenta que todos los componentes sean tan altos como el componente más alto.” Creo que como las cajas a las que estás añadiendo los componentes tienen una alineación X_AXIS están respetando los anchos preferidos de los componentes solamente. Luego, cuando agrega cada una de esas cajas a la caja exterior con una alineación Y_AXIS, la caja exterior honra la altura preferida de las cajas interiores, que probablemente está configurada para ocupar el mayor espacio posible, de modo que todo el tamaño de la caja exterior se divide por igual entre las cajas interiores… luego, como las cajas interiores sólo honran el ancho preferido de sus componentes, hacen que la altura de sus componentes sea la altura del componente más grande y esto ocupa el mayor espacio posible en el interior de las cajas interiores. Te recomendaría que usaras un JPanel con FlowLayout en lugar de Boxes para las cajas interiores, o que cambiaras tu diseño a dos cajas verticales en lugar de cuatro horizontales.
Ejemplo de diseño de caja
La clase BoxLayout se utiliza para organizar los componentes ya sea verticalmente (a lo largo del eje Y) u horizontalmente (a lo largo del eje X). En la clase BoxLayout, los componentes se colocan en una sola fila o en una sola columna. Los componentes no se envolverán, por lo que, por ejemplo, una disposición horizontal de los componentes se mantendrá horizontalmente cuando se cambie el tamaño del marco.Constructor de la clase:Métodos comúnmente utilizados:Los siguientes programas ilustran la clase BoxLayout:Nota: Los programas anteriores podrían no ejecutarse en un IDE online. Por favor, utilice un compilador offline.Referencia: https://docs.oracle.com/javase/7/docs/api/javax/swing/BoxLayout.htmlMy Notas personales