Umieściłem moje guziki w JPane z GridLayout. Następnie umieszczam JPanel w innym JPanelu z BoxLayout.Y_AXIS. Chcę, żeby przyciski w GridLayout były kwadratowe. Używam tmp.setSize (30,30) i to nie działa. Próbuję też użyć new GridLayout(X, Y, 4, 4)
, ale nie mogę zrozumieć, czym są X i Y. A więc, jaki jest właściwy sposób na zrobienie tego?Jak ustawić rozmiar przycisku?
DODANO:
ja wciąż nie może rozwiązać ten problem. Oto kod, co staram się robić:
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);
}
}
Problemem jest to, że Java próbuje uczynić szerokość firstPanel
i secondPanel
równy! Co więcej, Java próbuje wypełnić całą wysokość okna. Jak mogę usunąć to zachowanie?
Próbowałem tego kodu. To działa. Ale jeśli spróbuję wdrożyć ten sam pomysł w moim programie, to nie działa. Myślę, że to dlatego, że dołączam mój JPanel (z GridLayout) do innego JPanela (z BoxLayout.Y_AXIS). – Roman
@Roman Jeśli potrzebujesz bardziej szczegółowej pomocy, musisz opublikować przykładowy kod! – Kris
zgodnie z życzeniem, wysłałem kod. – Roman