Pongo mis botones en un JPane con GridLayout. Luego puse JPanel en otro JPanel con BoxLayout.Y_AXIS. Quiero que los botones en el GridLayout sean cuadrados. Yo uso tmp.setSize (30,30) y no funciona. También trato de usar new GridLayout(X, Y, 4, 4)
pero no puedo entender qué son X e Y. Entonces, ¿cuál es la forma correcta de hacer esto?¿Cómo puedo establecer el tamaño de un botón?
añadido:
Todavía no puedo resolver el problema. Aquí está el código de lo que estoy tratando de hacer:
import javax.swing.*;
import java.awt.*;
public class PanelModel {
public static void main(String[] args) {
JFrame frame = new JFrame("Colored Trails");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
JPanel firstPanel = new JPanel();
firstPanel.setLayout(new GridLayout(4, 4));
JButton btn;
for (int i=1; i<=4; i++) {
for (int j=1; j<=4; j++) {
btn = new JButton();
btn.setPreferredSize(new Dimension(100, 100));
firstPanel.add(btn);
}
}
JPanel secondPanel = new JPanel();
secondPanel.setLayout(new GridLayout(5, 13));
for (int i=1; i<=5; i++) {
for (int j=1; j<=13; j++) {
btn = new JButton();
btn.setPreferredSize(new Dimension(40, 40));
secondPanel.add(btn);
}
}
mainPanel.add(firstPanel);
mainPanel.add(secondPanel);
frame.add(mainPanel);
frame.setSize(400,600);
frame.setVisible(true);
}
}
El problema es que Java trata de hacer que la anchura de la firstPanel
y secondPanel
iguales! Además, Java intenta llenar toda la altura de la ventana. ¿Cómo puedo eliminar este comportamiento?
Probé este código. Funciona. Pero si trato de implementar la misma idea en mi programa, no funciona. Creo que la razón es que incluyo mi JPanel (con GridLayout) en otro JPanel (con BoxLayout.Y_AXIS). – Roman
@Roman Si desea ayuda más específica, deberá publicar un código de muestra. – Kris
según lo solicitado, publiqué el código. – Roman