Ich habe meine Buttons in eine JPane mit GridLayout gelegt. Dann setze ich JPanel mit BoxLayout.Y_AXIS in ein anderes JPanel. Ich möchte, dass die Buttons im GridLayout quadratisch sind. Ich benutze tmp.setSize (30,30) und es funktioniert nicht. Ich versuche auch, new GridLayout(X, Y, 4, 4)
zu verwenden, aber ich kann nicht herausfinden, was X und Y sind. Also, was ist der richtige Weg, um dieses Zeug zu machen?Wie kann ich die Größe einer Schaltfläche festlegen?
ZUSÄTZLICH:
Ich kann immer noch nicht das Problem lösen. Hier ist der Code von dem, was ich zu tun versucht:
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);
}
}
Das Problem ist, dass Java versucht Breite des firstPanel
und secondPanel
gleich zu machen! Außerdem versucht Java, die gesamte Höhe des Fensters zu füllen. Wie kann ich dieses Verhalten entfernen?
Ich habe diesen Code ausprobiert. Es klappt. Aber wenn ich versuche, die gleiche Idee in meinem Programm zu implementieren, funktioniert es nicht. Ich denke, das liegt daran, dass ich mein JPanel (mit dem GridLayout) zu einem anderen JPanel (mit BoxLayout.Y_AXIS) hinzufüge. – Roman
@Roman Wenn Sie genauere Hilfe benötigen, müssen Sie einen Beispielcode posten! – Kris
wie angefordert, habe ich den Code veröffentlicht. – Roman