Java/Eclipse IDE aquí.JButtons dentro de JPanels con GridLayout JFrame
Tengo un JFrame configurado en un GridLayout de tamaño NxN. N es dado por el usuario como una línea de comando al inicio del programa. JButtons en un patrón NxN se agregan a la ventana en JPanels, establecidos en la ubicación por GridLayout (creo).
¿Cada JButton necesita su propio JPanel para usar GridLayout? Tengo la impresión de que puede configurar solo un JPanel para todos los botones y configurar el JPanel en un GridLayout para los JButtons. Quiero agregar otro JPanel a la izquierda de la matriz de botones para mostrar los clics de los botones (JLabel) y un botón de reinicio dentro del mismo JPanel izquierdo.
Aquí es (un poco de) mi código, donde N es dada por el usuario, el sistema es mi fondo de procesos de clase, y ButtonEvent es la clase para ActionListener/actionPerformed:
JFrame window = new JFrame("");
GridLayout layout = new GridLayout(N,N);
window.setLayout(layout);
for (int row = 0; row < N; row++){
for (int col = 0; col < N; col++){
JPanel panel = new JPanel();
JButton b = new JButton ("("+row+","+col+")");
window.add(b).setLocation(row, col);
panel.add(b);
b.addActionListener(new ButtonEvent(b, system, row, col));
window.add(panel);
}
}
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.pack();
window.setVisible(true);
y esto es lo tengo (N = 4):
aquí es (aproximadamente) lo que estoy buscando (N = 4):
Todo lo que necesito y quiero son dos (o más) JPanels que se configuran aproximadamente como arriba, y todos los administradores de diseño que he probado no juegan bien con el diseño GridLayout JFrame.
Se recomiendan todas las recomendaciones para una mejor solución.
Gracias!
+1 Consulte también este [ejemplo] relacionado (http://stackoverflow.com/a/7706684/230513). – trashgod
@trashgod: Gracias por eliminar ese gran error, ya que ahora al menos se ejecutará, incluso sin proporcionar ningún argumento :-). Mi cheque antes era inútil, LOL. –
¡Agradable! Me gusta cómo esto se reajusta (o, en realidad, no cambia de tamaño). La publicación de trashgod a continuación explica exactamente por qué funciona así. ¡Gracias! – Avertheus