Seguimos con los layouts. Recordar que para entender este ejemplo es necesario chekear las anteriores explicaciones sobre FlowLayout y BoxLayoutLayout
BorderLayout, es un layout que ubica los componentes en cualquiera de sus 5 regiones que tiene..
Un componente podemos ubicarlo arriba, abajo, izquierda o a la derecha.
Para establecer a BorderLayout como manegador de Disenio,
JFrame frame = new JFrame(); frame.setLayout(new BorderLayout());
Luego para agregar los componentes
frame.add(etiqeuta, BorderLayout.CENTER); frame.add(botonIzquierdo,BorderLayout.WEST); frame.add(botonDerecho,BorderLayout.EAST); frame.add(cajaTexto,BorderLayout.NORTH); frame.add(panelInferior,BorderLayout.SOUTH);
No es obligatorio, llenar todas las regiones, en el caso de existir alguna region sin componente, esta region visiblemente se anulara, es importante esto, ya que si enviamos un componente al centro, y no enviamos nada en la parte izquierda(WESTH), entonces, el componente enviado al centro se visaluizara en la parte WESTH.
En el ejemplo siguiente se tiene, un JFrame, este mismo los ordenara atravez de un BorLayout, En el norte, ira una JLabel, en el centro un JTextAre, y en el sur, este y el oeste un panel para cada region.
Cada panel, ubicara sus componentes de la forma que noosotros queramos, en este caso el del sur, atravez de un flowLayout, y el de este y oeste con un BoxLayout.
Aqui el demo
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.Font; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.WindowConstants; public class DemoBorderLayout { //variables y comtenedores private JLabel etiquetaSu; private JPanel panelIzquierdo, panelDerecho, panelInferior; private JButton botonIz1, botonIz2, botonIz3; private JButton botonDe1, botonDe2, botonDe3; private JButton botonIn1, botonIn2; private JScrollPane scroll; public void contruyePanelIzquierdo(){ panelIzquierdo = new JPanel(); botonIz1=new JButton("Izq1"); botonIz2=new JButton("Izq2"); botonIz3=new JButton("Izq3"); panelIzquierdo.setLayout(new BoxLayout(panelIzquierdo,BoxLayout.Y_AXIS)); panelIzquierdo.setBackground(Color.red); panelIzquierdo.add(botonIz1); panelIzquierdo.add(botonIz2); panelIzquierdo.add(botonIz3); } public void contruyePanelDerecho(){ panelDerecho = new JPanel(); botonDe1=new JButton("Der1"); botonDe2=new JButton("Der2"); botonDe3=new JButton("Der3"); panelDerecho.setLayout(new BoxLayout(panelDerecho,BoxLayout.Y_AXIS)); panelDerecho.setBackground(Color.blue); panelDerecho.add(botonDe1); panelDerecho.add(botonDe2); panelDerecho.add(botonDe3); } public void contruyePanelInferior(){ panelInferior = new JPanel(); botonIn1=new JButton("Aceptar"); botonIn2=new JButton("Cancelar"); panelInferior.setLayout(new FlowLayout()); panelInferior.setBackground(Color.green); panelInferior.add(botonIn1); panelInferior.add(botonIn2); } public void contruyeVentana(){ JFrame frame = new JFrame(); scroll = new JScrollPane(new JTextArea("JTextArea",10,15)); etiquetaSu = new JLabel("Demostracion por INFORUX "); Font aux=etiquetaSu.getFont(); etiquetaSu.setFont(new Font(aux.getFontName(), aux.getStyle(), 20)); frame.setLayout(new BorderLayout()); //agregamos los paneles al frame principal frame.add(etiquetaSu,BorderLayout.NORTH); frame.add(scroll, BorderLayout.CENTER); frame.add(panelIzquierdo,BorderLayout.WEST); frame.add(panelDerecho,BorderLayout.EAST); frame.add(panelInferior,BorderLayout.SOUTH); //Configuramos el frame frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public DemoBorderLayout(){ contruyePanelInferior(); contruyePanelIzquierdo(); contruyePanelDerecho(); contruyeVentana(); } public static void main (String [] inforux){ new DemoBorderLayout(); } }
Compilamos y ejecutamos.
$javac DemoBorderLayout.java $java DemoBorderLayout
El resultador ser asi
En esta interfaz de usuario, solo se empleo los layouts, explicados FlowLayout, BoxLayout y BorderLayout.
Sencillo.
PD: La API completa de BorderLayout
Saludos
Mui buen ejemPlo peRO si por ejemplo en la zoma norte no kiero ningun boton
peRO kiero ke c kede un marguen es decir un espacio como le haGO??
me parece muy grafico ,
¿ la distribucion ordenada del panael izquierdo y panel derecho es automatica y como se puede distancia mas entre los botoneas?
util, y practica la explikacion
Hello to all, how is everything, I think every
one is getting more from this website, and your views are fastidious in favor of
new viewers.
Please note doctors don’t prescribe oral medicines for vaginal infections, it can lead to side-effects. And with good reason because sometimes running an app on the big screen is nothing short of magical. Aided by the Pills rapidly getting best tablet pc all of the direct device when using the iphone, it is really distinct that we should expect to witness it develop worldwide recognition for countless years.
Gracias, me habían encargado un chat usando el BorderLayout y ni siquera lo conocía. Me ayudó la explicación y el ejemplo.
gracias 😀
Muchas gracias, es un ejemplo perfeto del borderlayout , claro y muy bien explicado. Mañana examen. XD.
[…] https://inforux.wordpress.com/2009/01/20/java-practicando-con-borderlayout/ aquí viene un ejemplo. […]
joputa
la tuya que se me abre hijoe perra
chupa mi pinga cabron
Hola
pa ti mi cola
doxeado papu
192.168.0.56
2555.255.255.192
San Sebastian
Martin Calvo Otaegui