2010-03-31 15 views
5

¿Hay forma de utilizar más de 1 administrador de diseño en Java. En este momento estoy usando un gridLayout para implementar un tablero de ajedrez pero debajo de él me gustaría poner algunas otras cosas pero no en un gridLayout. Tal vez un FlowLayout o algún otro diseño. ¿Cómo voy a hacer esto? Gracias!Administradores de diseño múltiple en Java

Respuesta

6

¿Hay alguna manera de utilizar más de 1 administrador de diseño en Java.

Absolutamente. De hecho, usar múltiples administradores de diseño es la norma.

¿Cómo voy a hacer esto?

Cualquier subclase Container puede tener un y contener elementos secundarios. Y cada uno de estos elementos secundarios puede ser un Container con hijos. El contenedor más comúnmente utilizado debajo de los marcos de nivel superior es JPanel.

Para su ejemplo, probablemente debería utilizar un BorderLayout por el marco, poner un JPanel con la red en su posición central (porque eso es el que recibe todo el espacio restante disponible cuando las otras posiciones se han dado a sus tamaños preferidos) y otro JPanel con las "otras cosas" en la posición SUR.

Más detalles se pueden encontrar en el Swing tutorial on layout managers.

7

Sí, todo lo que necesita es planificar su excedente toda la interfaz de usuario de diseño (es decir, la ventana, el panel principal, etc)

Por ejemplo, es necesario poner algo debajo de su tablero de ajedrez, que normalmente iría con un BorderLayout en el nivel básico.

Supongamos que tengo un JPanel llamado masterPanel, que contiene todos los componentes de mi aplicación de ajedrez. Por lo tanto, el código se vería así:

JPanel masterPanel = new JPanel(new BorderLayout()); 
JPanel chessBoardPanel = createChessboardPanel(); //assuming this method will return a 
//JPanel with chess board using GridLayout 
JPanel infoPanel = new JPanel(); //this is the panel that would contain info elements, that //may go below my chess board. 
//Now add everything to master panel. 
masterPanel.add(chessBoardPanel, BorderLayout.CENTER); 
masterPanel.add(infoPanel, BorderLayout.PAGE_END); 
//add masterPanel to your window (if required) 
this.getContentPane().add(masterPanel); 
Cuestiones relacionadas