РЕШИТЬ:
Просто выяснил, в чем проблема, после попытки сделать SSCCE.
Это было связано с моим классом ячеек, я не осознавал, что переопределяю getX () и getY () из класса JComponent.
После переименования этих методов доступа все работает как положено
========================================
У меня есть JPanel с GridLayout, установленным в 3 строки по 3 столбца.
Я пытаюсь добавить JPanels к каждой ячейке в сетке, чтобы заполнить все 9 ячеек.
У каждого из этих JPanels есть переопределенный метод paintChildren, который будет рисовать какой-то прямоугольник, начинающийся в верхнем левом углу JPanel - конечным результатом будет то, что каждая ячейка имеет прямоугольник, начинающийся в верхнем левом углу ячейки.
После добавления всех JPanel к сетке все они появляются в верхнем левом углу, перекрывая друг друга (я подтвердил, что они перекрываются), вместо того, чтобы быть размещенными в сетке 3x3.
Как я могу расположить их в сетке 3x3?
(упрощенный код):
public class Panel extends JPanel {
public Panel(int x, int y) {
layout = new GridLayout(x, y, 2, 2);
setLayout(layout);
populateGrid();
}
public void populateGrid() {
removeAll();
for (int i = 0; i < 9; i++)
add(new Cell(50,50));
}
}
public class Cell extends JPanel {
public Cell(int x, int y) {
// x/y values used to define rectangle
setBorder(BorderFactory.createLineBorder(new Color(0,0,0)));
setBackground(Color.WHITE);
}
public void paintChildren(Graphics g) {
g.setColor(Color.BLUE);
g.fillRect(0, 0, x, y);
}
}