Pregunta

Estoy tratando de hacer una cuadrícula 2D de JTextFields para representar un mapa de nivel. He llegado a lo siguiente para inicializar la matriz 2D de Textfields:

fields = new TextField[level.rows][level.columns];
TextField field;
    for (int r = 0; r < level.rows; r++) {
        for (int c = 0; c < level.columns; c++) {
            field = new TextField(level.bricks[r][c].type);
            fields[r][c] = field;
        }  

Ahora tengo que agregarlos al Jframe, pero necesitan estar alineados para que cada row se mete debajo de la otra columna. Encontré GridLayout, sin embargo, no tengo mucha experiencia con AWT/Swing, y aún así no sé cómo lograr el diseño deseado. Esperaba que hubiera algún tipo de método como gLayout.add(JComponent,row,column).

¿Fue útil?

Solución

Esto debería funcionar como lo explicó, aquí hay un ejemplo completamente funcional que pone JLabels En la cuadrícula 5x5:

import java.awt.*;
import javax.swing.*;

public class GridPrb {
  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Container cp = frame.getContentPane();
    cp.setLayout(new GridLayout(5, 5));

    for(int y = 0; y < 5; y++) {
      for(int x = 0; x < 5; x++) {
        Label l = new Label("x=" + x + ",y=" + y);
        cp.add(l);
      }
    }
    frame.pack();
    frame.setVisible(true);
  }
}

El resultado final se vería algo así:

enter image description here

Espero que esto ayude.

Otros consejos

Debe tener cuidado al agregar orden, el contenedor se llena columna tras columna en GridLayout.

frame.setLayout( new GridLayout( level.rows, level.columns );

for (int c = 0; c < level.columns; r++) 
    for (int r = 0; r < level.rows; c++) 
         frame.add(fields[r][c]);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top