Creo que agregar un elemento a un JFrame es algo que nos va a tocas que hacer siempre y el concepto es similar para un JPanel, JWindow y JDialog.
Y como siempre lo e dicho hay personas que somos un poco desesperados :D así que acá va el código en general y luego doy -en este mismo post- una explicación un poco más detallada:
Para agregar un elemento lo único que se debe hacer es útilizar el método add que tiene el JFrame.
Por ejemplo:
BorderLayout -es el que más e usado- tiene un formato como el siguiente:
Este es el Layout que tiene por defecto un JFrame. La característica que tiene este Layout es que cuando se agrega un objeto automaticamente toma un tamaño aunque nosotros le hayamos asignado un tamaño, el tamaño que toma variará al tamaño del JFrame.
Por ejemplo si a un JFrame le agrego únicamento un botón entonces el botón tendría el tamaño del JFrame -me imagino que esto ya te a pasado, a mí también me paso :D-. Si hay más objetos entonces variará el tamaño, como en el ejemplo que muestra la imagen. La otra característica es que divide al JFrame en 5 partes, Arriba -PAGE_START-, Abajo -PAGE_END-, Izquierda -LINE_START-, Derecha -LINE_END- y Centro -CENTER-.
Por ejemplo si quires agregar una etiqueta al centro lo debes hacer de la siguiente manera:
BoxLayout
CardLayout
FlowLayout
Y como siempre lo e dicho hay personas que somos un poco desesperados :D así que acá va el código en general y luego doy -en este mismo post- una explicación un poco más detallada:
import javax.swing.JFrame; import javax.swing.JButton; public class Ventana extends JFrame { public static void main( String []arg ){ new Ventana(); } public Ventana(){ this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(400,400); //Esto permite que la ventana aparezca al centro this.setLocationRelativeTo(null); // //Para que el JFrame no tenga ningún formato //se coloca el Layout del JFrame en null //no hay que olvidarse de colocarle tamaño y posición //a los elementos que se agregan this.setLayout(null); // JButton boton = new JButton(); boton.setText("¡Presioname!"); //Colocamos la posición y el tamaño boton.setBounds(135,150,130,50); //Esto se útiliza para agregar el botón al JFrame add(boton); this.setVisible(true); } }El resultado es el siguiente:
Para agregar un elemento lo único que se debe hacer es útilizar el método add que tiene el JFrame.
Por ejemplo:
JFrame frame = new JFrame(); //Esto es necesario sino quieres Layout -formato- frame.setLayout(null); JLabel label = new JLabel("Etiqueta"); label.setBounds(10,10,100,75); frame.add(label)Al JFrame le puedes agrega Paneles, Botones, Etiquetas, Tablas etc.
Nota: Siempre coloca un tamaño al objeto que quieres agregar, si te preguntas porque es que no muestrá el objeto, es porque no le has dado un tamaño al objeto que quieres agregar.En este caso útilizo setBounds para dar la posición y tamaño. Puedes también hacerlo con setLocation para indicar la posición y con setSize le indicas el tamaño.
JFrame frame = new JFrame(); //Esto es necesario sino quieres Layout -formato- frame.setLayout(null); JLabel label = new JLabel("Etiqueta"); label.setLocation(10,10); label.setSize(100,75); frame.add(label)Pero más que decirte que lo agregas hay una cosa que necesitas saber y es que un JFrame utiliza algo que se llaman Layout y hay Layouts que pueden ser tan simples y otros complejos. Ahora un Layout es como un formato para definirlo en pocas palabras, y lo que se pretende es darnos una ayudadita al hora de agregar elementos. Creo que esto se entenderá un poco mejor colocando como ejemplo el siguiente Layout
BorderLayout -es el que más e usado- tiene un formato como el siguiente:
Imagen tomada de http://docs.oracle.com/ |
Por ejemplo si a un JFrame le agrego únicamento un botón entonces el botón tendría el tamaño del JFrame -me imagino que esto ya te a pasado, a mí también me paso :D-. Si hay más objetos entonces variará el tamaño, como en el ejemplo que muestra la imagen. La otra característica es que divide al JFrame en 5 partes, Arriba -PAGE_START-, Abajo -PAGE_END-, Izquierda -LINE_START-, Derecha -LINE_END- y Centro -CENTER-.
Por ejemplo si quires agregar una etiqueta al centro lo debes hacer de la siguiente manera:
JFrame frame = new JFrame(); //Esto es necesario sino quieres Layout -formato- frame.setLayout(null); JLabel label = new JLabel("Etiqueta"); label.setBounds(10,10,100,75); //Se coloca BorderLayout.CENTER para indicar
//que se debe colocará al centro frame.add(label, BorderLayout.CENTER);Si quisieras agregalo a:
- La derecha: frame.add(label, BorderLayout.LINE_END);
- La izquierda: frame.add(label, BorderLayout.LINE_START);
- Arriba: frame.add(label, BorderLayout.PAGE_START);
- Abajo: frame.add(label, BorderLayout.PAGE_END);
- Centro: frame.add(label, BorderLayout.CENTER);
BoxLayout
CardLayout
FlowLayout
4 comentarios:
Buenas fijate que tengo un proyecto de tetris tengo dos clases una en donde creo la pieza la segunda (extiende a un JPanel)en donde creo el "el tablero"en donde van a caer la piezas pero al momento de quererlo mostrar en un jframe no me lo muestra solo me muestra los botones que ya tengo creados
Que tal Jose, Primero deberías de ver que tipo de Layout tenes, si tenes un Layout como null entonces verifica si le colocaste un tamaño al JPanle. Si tenes el Layout por defecto que es El BorderLayout es decir el que tiene 5 areas, puede ser que te este ingresando el JPanel en alguna de las 4 áreas pero no en el centro, es decir, talvez te lo esta introduciendo a la derecha, izquierda, arriba o abajo pero no en el centro.
Amen
Ve https://www.youtube.com/watch?v=Zz7YZtpz2Ek
Publicar un comentario