APUNTES de HTLM5, CSS, JavaScript, ES5, php, VBA, JAVA
Cuando empecé mi camino en la programación, me dí cuenta que en ocasiones no era tan fácil como creía encontrar apuntes y deseo compartir lo que voy aprendiendo por si a alguien le resulta de utilidad.
Ahora tengo una meta vivir de la programación, poco a poco intento sumar conocimientos y compartirlos con todos vosotros. Por el camino cometeré errores pero tengo las metas muy claras.
BorderLayout(diseño de borde): Dispondremos los objetos utilizando los puntos cardinales como
referencia. Los componentes que introduzcamos en cada una de las zonas se harán
lo suficiente mente grandes como para llenar la zona a la que pertenecen.
BorderLayout
tiene una característica peculiar y es que los componentes que introduzcamos en
cada una de las zonas se harán lo suficiente mente grandes como para llenar la cuadricula
en la que se encuentra.
Ejemplo con el constructor por
defecto BorderLayout():
classPanelextends JPanel{
public Panel() {
setLayout(new BorderLayout());
add(new JButton ("NORTE"),BorderLayout.NORTH);
add(new JButton ("CENTRO"),BorderLayout.CENTER);
add(new JButton ("OUESTE"),BorderLayout.EAST);
add(new JButton("SUR"),BorderLayout.SOUTH);
add(new JButton("ESTE"),BorderLayout.WEST);
}
}
Existe un segundo constructor que nos permite dar espacio entre los
componentes
BorderLayout(espacio
horizontal entre componentes, espacio vertical entre componentes)
En el siguiente artículo recopilo los diferentes tipos de Layout que he ido practicando y acumulando en mis apuntes. Todo el código que pongo lo voy probando para practicar por lo que por lo menos a mí me funciona.
FlowLayout (diseño de flujo): Es la
disposición por defecto al crear un marco siempre que no le indiquemos lo
contrario al crear un marco.
oConstructores:
FlowLayout()
FlowLayout(int alineación)
FlowLayout (int alineación, int separación entre botones, int separación_vertical al borde)
Ejemplo:
import
java.awt.FlowLayout;
import javax.swing.*;
publicclass
otroEjemplodelayout {
publicstaticvoid main (String[] asgs) {
(new
Marco123456789()).setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
BorderLayout(diseño
de borde): Dispondremos los objetos
utilizando los puntos cardinales como referencia. Los componentes que
introduzcamos en cada una de las zonas se harán lo suficiente mente grandes
como para llenar la zona a la que pertenecen.
BorderLayout
tiene una característica peculiar y es que los componentes que introduzcamos en
cada una de las zonas se harán lo suficiente mente grandes como para llenar la
cuadricula en la que se encuentra.
Ejemplo con el constructor por
defecto BorderLayout():
classPanelextends JPanel{
public Panel() {
setLayout(new BorderLayout());
add(new JButton ("NORTE"),BorderLayout.NORTH);
add(new JButton ("CENTRO"),BorderLayout.CENTER);
add(new JButton ("OUESTE"),BorderLayout.EAST);
add(new JButton("SUR"),BorderLayout.SOUTH);
add(new JButton("ESTE"),BorderLayout.WEST);
}
}
Existe un segundo constructor que nos permite dar espacio entre los
componentes
BorderLayout(espacio
horizontal entre componentes, espacio vertical entre componentes)
classPanelextends JPanel{
public Panel() {
setLayout(newBorderLayout(10,20));
add(new JButton ("NORTE"),BorderLayout.NORTH);
add(new JButton ("CENTRO"),BorderLayout.CENTER);
add(new JButton ("OUESTE"),BorderLayout.EAST);
add(new JButton("SUR"),BorderLayout.SOUTH);
add(new JButton("ESTE"),BorderLayout.WEST);
}
}
En el siguiente
ejercicio vamos a ver como unir
dos Layout en un mismo marco. Utilizaremos un único marco como
contenedor y dos láminas. En la primera lámina crearemos varios objetos
dispuesto con diseñoBorderLayout que
utilizaremos para el cuerpo del Frame y una segunda lámina con diseño
FlowLayout para poner un menú al marco. Al final uniremos las dos layout en un
solo marco con diseño BorderLayout para orientarlas en
el espacio.
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.*;
publicclass
otroEjemplodelayout {
publicstaticvoid main (String[] asgs) {
(new
Marco123456789()).setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
(new Marco123456789()).setVisible(true);
}
}
classPanelextends JPanel{
public Panel()
{
setLayout(new BorderLayout(10,10));
add(new JButton ("BOTON 1"),BorderLayout.NORTH);
add(new JButton ("BOTON 2"),BorderLayout.CENTER);
add(new JButton ("BOTON 3"),BorderLayout.EAST);
add(new JButton("BOTON 4"),BorderLayout.SOUTH);
add(new JButton("BOTON 5"),BorderLayout.WEST);
}
}
classPanel2extends JPanel{
public Panel2() {
setLayout(new FlowLayout(FlowLayout.CENTER));
add(new JButton ("1"));
add(etiqueta = new JLabel
("Etiqueta"));
add(Caja_voz = new
JCheckBox ("ChexkBox"));
add(Check_redondo = new
JRadioButton ("check
redondo"));
Combo=newJComboBox();
Combo.addItem("");
Combo.addItem("uno");
Combo.addItem("dos");
Combo.addItem("tres");
add(Combo);
add(Texto=new
JTextField("texto"));
}
JLabel etiqueta;
JCheckBox Caja_voz;
JRadioButton Check_redondo;
JComboBoxCombo;
JTextField Texto;
}
classMarco123456789extends JFrame{
public Marco123456789() {
setTitle("Practica");
setBounds(700,250,500,300);
//creamosobjetosconlaslaminas
Panel Panel_de_cuerpo =new
Panel();
Panel2 Panel_menu =new
Panel2();
//Lasunimosalmarco y disponemosen el espaciocon
BorderLayout
add(Panel_de_cuerpo,BorderLayout.CENTER);
add(Panel_menu,BorderLayout.NORTH);
}
}
GridLayout(diseño
cuadricula): distribuirá nuestro marco formando una cuadricula como la de una
hoja de Excel.
oConstructor:
GridLayout () constructor por defecto
crea una columna por cada componente que tenga en una sola fila
GridLayout (int
rows, int cols) crea las filas y
columnas que le indiquemos nosotros (rows = filas, cols = columnas).
GridLayout (int
rows, int cols, int hgap, int vgap) crea las filas y columnas que le indiquemos y
da separación entre los objetos ( hgap
= separcion horizontal, vgap = separación vertical).
oMétodos:
§setHgap(int separacion)
§setVgap(int separacion)
En el siguiente ejemplo vamos a
crear dos láminas una en la que incluiremos los números y otra en la que
ponderemos un cuadro de texto.
import java.awt.*;
import javax.swing.*;
publicclass
otroEjemplodelayout {
publicstaticvoid main (String[] asgs) {
(new
Marco123456789()).setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
También podemos cargar los datos
en la lámina utilizando un array. Y en Lugar del setBounds para dar tamaño al
cuadro utilizar pack(), que le dará tamaño de forma automática.
package poo;
import java.awt.*;
import javax.swing.*;
publicclass otroEjemplodelayout
{
publicstaticvoid main (String[] asgs) {
(new
Marco123456789()).setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
BoxLayout(diseño de caja): Dispone todos los objetos en cajas que podemos organizar de
diferentes formas utilizando sus métodos. Pude venirnos muy bien para
formularios. para mensajes de alerta, cajas de password…
No tenemos que
crear láminas y luego unirlas al marco, creamos las cajas (Box) y las unimos al
marco.
§createHorizontalBox() dispone las cajas una al lado de otra a lo
largo de la lámina. Si excedemos el tamaño de la lámina los elementos que
queden fuera no los veríamos. Para poder verlos tendríamos que ampliar la caja.
§createVerticalBox() dispone las cajas una encima de otra a lo largo
de nuestra lámina. Si excedemos el tamaño de la lámina los elementos que queden
fuera no los veríamos Para poder verlos tendríamos que ampliar la caja.
§createVerticarStrut(int height) determina
la distancia Vertical entre cajas utilizando un intger que le pasamos por
parámetros.
§createHorizontalStrut(int Width) determina
la distancia horizontal entre cajas utilizando un intger que le pasamos
§createGlue() adapta la distancia que existe entre dos componentes
cuando se redimiensiona el marco, por lo que la distancia se ampliara
proporcionalmente cuando ampliemos
CardLayout(diseño
carta): Dispone un cuadro combinado en la parte superior centrado y
dependiendo del que seleccionemos aparecerán diferentes controles en la parte
inferior.
GropuLayout(diseño de grupo): El diseño se define para cada
dimensión de forma independiente. En consecuencia, sin embargo, cada
componente debe definirse dos veces en el diseño. Se utiliza para los
constructores GUI.
SpringLayout(diseño
primavera o muelle): Nos permite especificar relaciones entre los
componentes bajo nuestro
control.
Creamos una especie de puelles entre los objetos y
cuando se redimensiona adquieren la separación dependiendo de los parámetros
que le pasemos. A mayor tensión más le
costará estirar entre botones, contra menor sea la tensión más se separaran.
1.Crearemos un SpringLayout en nuestra lámina para disponerla con este
diseño predeterminado de java.
SpringLayoutLY_Spring
= new SpringLayout();
2.Mas adelante crearemos una instancia a la clase Spring.
Spring separador
= Spring.constant(0, 10, 100);
3.Ahora Utilizaremos el método PutContraint(inicio muelle,ElementoUnion,Objeto
Spring creado,proximoObjeto)