Necesito una ayuda para la localización de un JPanel en una posición específica en un Jframe.
Tengo un JPanel en una clase que extiende JFrame, y tengo que poner este JPanel en una determinada posición x,y.
Es algo como esto:
public class Frame extends JFrame {
public Frame(){
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLocation(250, 250);
this.setSize(300,300);
this.setVisible(true);
JPanel panel = new JPanel();
this.add(panel);
panel.setLocation(150, 150);
panel.add(new JButton("Hello!")); //just to show JPanel
}//Frame()
}//Frame
No necesito un LayoutManager para la posición de la JPanel, porque tengo que poner ese JPanel en una posición específica (como 150,150 de ejemplo).
Pero si hago panel.setLocation(150,150) como en el código anterior, no pasa nada, y JPanel permanecer en el norte-centro de la imagen (también si puedo cambiar x,y el número en lugar de 150,150).
Y se muestra como este:
http://i.imgur.com/Te3z0kv.png
- Para el posicionamiento absoluto, es necesario utilizar un null administrador de diseño. Para obtener más información, consulte Hacer Sin un Gestor de Diseño (Posicionamiento Absoluto).
- Gracias! Esto es lo que yo quería! 😀
- posicionamiento absoluto no se recomienda como medida de mis conocimientos
Del marco del panel de contenido, el gestor de diseño por defecto es un BorderLayout (NWSE+C). Hacer:
EmptyBorder
de todo el panel. Cualquiera que sugiera que el uso de un null diseño realmente deservies un voto. El uso de una nula disposición a causar muchos problemas, especialmente para el principiante a los programadores que no entiendo es cómo Swing obras.utilizando setBounds(new Rectangle(96, 67, 98, 41));
usted puede hacer esto…
acabo de ver el ejemplo
}
Un JFrame que utiliza el objeto borderlayout manager por defecto y JPanels uso framelayout administrador por defecto.
Si desea utilizar el posicionamiento absoluto, entonces usted DEBE utilizar null su estructura, ya que cualquier otro gestor de diseño se utiliza setLocation() y setSize() métodos de acuerdo a sus propios estados de ánimo, y no según cómo quieras.
Resumen: el Uso de setLayout(null) y el uso de null administrador y, a continuación, utilizar setBounds(X,Y,ancho,alto) método.