Los layout managers en Java ayudan a controlar automáticamente el tamaño y posición de los componentes cuando se colocan en un contenedor. Java proporciona varios layout managers predefinidos como FlowLayout, BorderLayout, CardLayout y GridLayout para facilitar el diseño de interfaces y evitar tener que codificar manualmente la disposición de los componentes. El GridBagLayout es el más sofisticado pero también el más complejo de usar.
Introducción a Swing y a los Layout Managers. Es la séptima de una serie de nueve presentaciones para introducir al mundo de JAVA a alumnos de secundaria.
Cursos gratis de programación en Java. Swing y JavaFX. Orientado a Grado, DAM y DAW. Otros cursos disponibles para Android, Swift, Base de datos, javascript, servicios y procesos...
Introducción a Swing y a los Layout Managers. Es la séptima de una serie de nueve presentaciones para introducir al mundo de JAVA a alumnos de secundaria.
Cursos gratis de programación en Java. Swing y JavaFX. Orientado a Grado, DAM y DAW. Otros cursos disponibles para Android, Swift, Base de datos, javascript, servicios y procesos...
EjemploJInternalFrame
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
public class EjemploJInternalFrame extends JInternalFrame {
/* ÉSTE MAIN LO GENERA ECLIPSE PARA PRUEBAS, LO DEJO
* COMENTADO PORQUE YA ESTÁ FUNCIONANDO Y SE EJECUTARÁ
* DENTRO DE UN JDesktopPane COMO TODO BUEN JInternalFrame
* TAMBIÉN SE PUEDE EJECUTAR DENTRO DE OTROS PANELES
* PERO ESO NO SE SUELE UTILIZAR.
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
EjemploJInternalFrame frame = new EjemploJInternalFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}*/
// ÉSTE ES EL CONSTRUCTOR DE LA CLASE
public EjemploJInternalFrame() {
// coordenadas con las dimensiones de la ventana
setBounds(100, 100, 245, 134);
// disposición de capas a nulo para poder posicionar
// con coordenadas en vez de con el esquema determinado
getContentPane().setLayout(null);
// un etiqueta...
JLabel lblstoEsUna = new JLabel("\u00C9sto es una ventana interna...");
lblstoEsUna.setBounds(10, 11, 333, 14);
getContentPane().add(lblstoEsUna);
// el botón que cierra ésta ventana interna
JButton btnAprietaAquPara = new JButton("Aprieta aqu\u00ED para cerrar");
btnAprietaAquPara.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// ésto se ejecuta cuando se aprieta el botón
// manda la clase a la basura,
// con lo que se cierra la ventana
dispose();
}
});
btnAprietaAquPara.setBounds(10, 36, 209, 58);
getContentPane().add(btnAprietaAquPara);
}
}
***Proyecto PAPIIT IN102210***
UNAM. Facultad de Ingeniería.
Integrantes:
JUAN JOSE CARREON
J. ULISES GONZALEZ MEDINA
ANA LAURA GARCÍA ACOSTA
OMAR SIBAJA BAUTISTA
ROBERTO SOSA HIGAREDA
Documento sobre las diferentes fuentes que han servido para transmitir la cultura griega, y que supone la primera parte del tema 4 de "Descubriendo nuestras raíces clásicas", optativa de bachillerato en la Comunitat Valenciana.
La Unidad Eudista de Espiritualidad se complace en poner a su disposición el siguiente Triduo Eudista, que tiene como propósito ofrecer tres breves meditaciones sobre Jesucristo Sumo y Eterno Sacerdote, el Sagrado Corazón de Jesús y el Inmaculado Corazón de María. En cada día encuentran una oración inicial, una meditación y una oración final.
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...JAVIER SOLIS NOYOLA
El Mtro. JAVIER SOLIS NOYOLA crea y desarrolla el “ROMPECABEZAS DE ECUACIONES DE 1ER. GRADO OLIMPIADA DE PARÍS 2024”. Esta actividad de aprendizaje propone retos de cálculo algebraico mediante ecuaciones de 1er. grado, y viso-espacialidad, lo cual dará la oportunidad de formar un rompecabezas. La intención didáctica de esta actividad de aprendizaje es, promover los pensamientos lógicos (convergente) y creativo (divergente o lateral), mediante modelos mentales de: atención, memoria, imaginación, percepción (Geométrica y conceptual), perspicacia, inferencia, viso-espacialidad. Esta actividad de aprendizaje es de enfoques lúdico y transversal, ya que integra diversas áreas del conocimiento, entre ellas: matemático, artístico, lenguaje, historia, y las neurociencias.
Ponencia en I SEMINARIO SOBRE LA APLICABILIDAD DE LA INTELIGENCIA ARTIFICIAL EN LA EDUCACIÓN SUPERIOR UNIVERSITARIA. 3 de junio de 2024. Facultad de Estudios Sociales y Trabajo, Universidad de Málaga.
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMJuan Martín Martín
Examen de Selectividad de la EvAU de Geografía de junio de 2023 en Castilla La Mancha. UCLM . (Convocatoria ordinaria)
Más información en el Blog de Geografía de Juan Martín Martín
http://blogdegeografiadejuan.blogspot.com/
Este documento presenta un examen de geografía para el Acceso a la universidad (EVAU). Consta de cuatro secciones. La primera sección ofrece tres ejercicios prácticos sobre paisajes, mapas o hábitats. La segunda sección contiene preguntas teóricas sobre unidades de relieve, transporte o demografía. La tercera sección pide definir conceptos geográficos. La cuarta sección implica identificar elementos geográficos en un mapa. El examen evalúa conocimientos fundamentales de geografía.
LA PEDAGOGIA AUTOGESTONARIA EN EL PROCESO DE ENSEÑANZA APRENDIZAJEjecgjv
La Pedagogía Autogestionaria es un enfoque educativo que busca transformar la educación mediante la participación directa de estudiantes, profesores y padres en la gestión de todas las esferas de la vida escolar.
1. Los layout managers o manejadores de composición, en traducción literal, ayudan a adaptar los diversos
Componentes que se desean incorporar a un Panel, es decir, especifican la apariencia que tendrán los
Componentes a la hora de colocarlos sobre un Contenedor, controlando tamaño y posición (layout)
automáticamente. Java dispone de varios, en la actual versión, tal como se muestra en la imagen:
¿Por qué Java proporciona estos esquemas predefinidos de disposición de componentes? La razón es
simple: imaginemos que se desean agrupar objetos de distinto tamaño en celdas de una rejilla virtual: si
confiados en nuestro conocimiento de un sistema gráfico determinado, se codificase a mano tal
disposición, se debería preveer el redimensionamiento del applet, su repintado cuando sea cubierto por
otra ventana, etc., además de todas las cuestiones relacionadas con un posible cambio de plataforma (uno
nunca sabe a donde van a ir a parar los propios hijos, o los applets).
Sigamos imaginando, ahora, que un hábil equipo de desarrollo ha previsto las disposiciones gráficas más
usadas y ha creado un gestor para cada una de tales configuraciones, que se ocupará, de forma
transparente para nosotros, de todas esas cuitas de formatos. Bien, pues estos gestores son instancias de
las distintas clases derivadas de LayoutManager y que se utilizan en el applet que genera la figura
siguiente, donde se muestran los diferentes tipos de layouts que proporciona el AWT.
2. FlowLayout
Es el más simple y el que se utiliza por defecto en todos los Paneles si no se fuerza el uso de alguno de los
otros. Los Componentes añadidos a un Panel con FlowLayout se encadenan en forma de lista. La cadena
es horizontal, de izquierda a derecha, y se puede seleccionar el espaciado entre cada Componente.
Si el Contenedor se cambia de tamaño en tiempo de ejecución, las posiciones de los Componentes se
ajustarán automáticamente, para colocar el máximo número posible de Componentes en la primera línea.
Los Componentes se alinean según se indique en el constructor. Si no se indica nada, se considera que los
Componentes que pueden estar en una misma línea estarán centrados, pero también se puede indicar que
se alineen a izquierda o derecha en el Contenedor.
Codigo Ejemplo
Instancia un objeto FlowLayout object alieado al Centro
// y con una separacion de 3 pixels en horizonal y vertical
FlowLayout miFlowLayout = new FlowLayout( FlowLayout.CENTER,3,3 );
// Se fija este FlowLayout para que sea el controlador de
// posicionamiento de componentes para el objeto Frame
miFrame.setLayout( miFlowLayout );
3. BorderLayout
La composición BorderLayout (de borde) proporciona un esquema más complejo de colocación de los
Componentes en un panel. La composición utiliza cinco zonas para colocar los Componentes sobre ellas:
Norte, Sur, Este, Oeste y Centro. Es el layout o composición que se utilizan por defecto Frame y Dialog.
El Norte ocupa la parte superior del panel, el Este ocupa el lado derecho, Sur la zona inferior y Oeste el
lado izquierdo. Centro representa el resto que queda, una vez que se hayan rellenado las otras cuatro
partes. Así, este controlador de posicionamiento resuelve los problemas de cambio de plataforma de
ejecución de la aplicación, pero limita el número de Componentes que pueden ser colocados en
Contenedor a cinco; aunque, si se va a construir un interfaz gráfico complejo, algunos de estos cinco
Componentes pueden Contenedores, con lo cual el número de Componentes puede verse ampliado.
En los cuatro lados, los Componentes se colocan y redimensionan de acuerdo a sus tamaños preferidos y
a los valores de separación que se hayan fijado al Contenedor. El tamaño prefijado y el tamaño mínimo
son dos informaciones muy importantes en este caso, ya que un botón puede ser redimensionado a
proporciones cualesquiera; sin embargo, el diseñador puede fijar un tamaño preferido para la mejor
apariencia del botón. El controlador de posicionamiento puede utilizar este tamaño cuando no haya
indicaciones de separación en el Contenedor, o puede ignorarlo, dependiendo del esquema que utilice.
Ahora bien, si se coloca una etiqueta en el botón, se puede indicar un tamaño mínimo de ese botón para
que siempre sea visible, al menos, el rótulo del botón. En este caso, el controlador de posicionamiento
muestra un total respeto a este valor y garantiza que por lo menos ese espacio estará disponible para el
botón.
Codigo Ejemplo
Frame miFrame = new Frame( "Tutorial de Java, AWT" );
// Se instancia un objeto BorderLayout con una holgura en vertical y
// horizontal de 3 pixels
BorderLayout miBorderLayout = new BorderLayout( 3,3 );
// Se fija este BorderLayout para que sea el controlador de
// posicionamiento de componentes para el objeto Frame
miFrame.setLayout( miBorderLayout );
4. CardLayout
Este es el tipo de composición que se utiliza cuando se necesita una zona de la ventana que permita
colocar distintos Componentes en esa misma zona. Este layout suele ir asociado con botones de selección
(Choice), de tal modo que cada selección determina el panel (grupo de componentes) que se presentarán.
Codigo Ejemplo
panel1.setLayout( miGridLayout );
// Se instancia un objeto layout de tipo CardLayout para ser
// utilizado con el Panel
CardLayout miCardLayout = new CardLayout();
// Instancia el primero de los dos objetos Panel que sera
// integrado en el objeto Frame
Panel panel1 = new Panel();
// Fijamos el layout que habiamos definido para el panel
panel1.setLayout( miCardLayout );
Frame miFrame = new Frame( "Tutorial de Java, AWT" );
// IMPORTANTE: Se añaden los dos objetos Panel que se han
// preparado al objeto Frame para crear el interfaz definitivo
miFrame.add( panel1,"North" );
5. GridLayout
La composición GridLayout proporciona gran flexibilidad para situar Componentes. El controlador de
posicionamiento se crea con un determinado número de filas y columnas y los Componentes van dentro
de las celdas de la tabla así definida.
Si el Contenedor es alterado en su tamaño en tiempo de ejecución, el sistema intentará mantener el mismo
número de filas y columnas dentro de los márgenes de separación que se hayan indicado. En este caso,
estos márgenes tienen prioridad sobre el tamaño mínimo que se haya indicado para los Componentes, por
lo que puede llegar a conseguirse que sean de un tamaño tan pequeño que sus etiquetas sean ilegibles.
Codigo Ejemplo
panel1.setLayout( miGridLayout );
// Se instancia un objeto layout de tipo GridLayout para ser
// utilizado con el Panel
GridLayout miGridLayout = new GridLayout( 2,3 );
// Instancia el primero de los dos objetos Panel que sera
// integrado en el objeto Frame
Panel panel1 = new Panel();
// Fijamos el layout que habiamos definido para el panel
panel1.setLayout( miGridLayout );
Frame miFrame = new Frame( "Tutorial de Java, AWT" );
// IMPORTANTE: Se añaden los dos objetos Panel que se han
// preparado al objeto Frame para crear el interfaz definitivo
miFrame.add( panel1,"North" );
6. GridBagLayout
Es igual que la composición de GridLayout, con la diferencia que los Componentes no necesitan tener el
mismo tamaño. Es quizá el controlador de posicionamiento más sofisticado de los que actualmente
soporta AWT.
A la hora de ponerse a trabajar con este controlador de posicionamiento, hay que tomar el rol de un
auténtico aventurero. Parece que la filosofía de la gente de JavaSoft es que todo debe hacerse en el
código. La verdad es que hasta que no haya en Java algo semejante a los recursos de X, el trabajo del
programador, si quiere prescindir de herramientas de diseño, es un tanto prehistórico en su forma de hacer
las cosas.
Si el lector acepta una recomendación, el consejo es que evite como la peste el uso del GridBagLayout,
porque tanta sofisticación lo único que acarrea son dolores de cabeza; y, siempre se puede recurrir a la
técnica de combinar varios paneles utilizando otros controladores de posicionamiento, dentro del mismo
programa. Loa applets no apreciarán esta diferencia, al menos no tanto como para justificar los problemas
que conlleva el uso del GridBagLayout