У меня есть этот класс, который создает сетку:Добавление пользовательского компонента вручную в макете группы свинг
class GridPane extends JPanel{
public GridPane(int row,int col){
setLayout(new GridLayout(row,col));
setBorder(BorderFactory.createEmptyBorder(1,1,1,1));
for (int i =1; i<=(row*col); i++)
{
JPanel pan = new JPanel();
pan.setBackground(Color.RED);
pan.setPreferredSize(new Dimension(3,3));
pan.setBorder(BorderFactory.createLineBorder(Color.BLACK));
add(pan);
}
}
И это, которое устанавливает пустой основной фрейм с макетом группы:
public MainFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
GroupLayout gl_contentPane = new GroupLayout(contentPane);
gl_contentPane.setHorizontalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGap(0, 440, Short.MAX_VALUE)
);
gl_contentPane.setVerticalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGap(0, 268, Short.MAX_VALUE)
);
contentPane.setLayout(gl_contentPane);
}
I я не очень опытен с SWING, и я уже некоторое время пытаюсь добавить объект GridPane вправо от основного кадра. Он продолжает говорить мне что-то вроде:
java.lang.IllegalStateException: GridPane [, 0,0,0x0, недействительным, расположение = java.awt.GridLayout, alignmentX = 0,0, alignmentY = 0,0, граница = javax. swing.border.EmptyBorder @ 6ba7508a, флаги = 9, MaximumSize =, MinimumSize =, PreferredSize =] не прикрепляются к вертикальной/горизонтальной группе
кто-нибудь знает, что происходит? Что я должен сделать, чтобы выполнить то, что мне нужно? Извините за размещение большого количества кода. Спасибо за помощь.
Большое спасибо за вашу работу. Это именно то, что я искал! – Cemre
Это мое удовольствие. – Katana