1
Я хочу добавить CellPanel
, который расширяет JPanel
внутри a JPanel
. Я делаю это, потому что у меня есть кнопки, которые удаляют содержимое из этих JPanels
и добавляют другие компоненты. Проблема в том, что FlowLayout
JPanel
s не позиционирует мой CellPanel
в верхнем левом углу. Что я могу сделать?JPanel внутри JPanel добавляет верхнюю обивку
Вот код, где я с этой проблемой:
JFrame mazeFrame = new JFrame("Create and Play");
mazeFrame.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
mazeFrame.setSize(640, 480);
mazeFrame.setResizable(false);
mazeFrame.setLocationRelativeTo(null);
mazeFrame.setLayout(new GridLayout(rows,columns));//max(7,10)
JPanel[] cellr = new JPanel[rows*columns];
for(int i=0;i<rows*columns; i++){
cellr[i] = new JPanel();
cellr[i].setPreferredSize(new Dimension(mazeFrame.getWidth()/columns,mazeFrame.getHeight()/rows));
mazeFrame.getContentPane().add(cellr[i]);
}
for(int i=0;i<rows*columns; i++){
CellPanel cell = new CellPanel(wall.getImage());
cell.setPreferredSize(new Dimension(mazeFrame.getWidth()/columns,mazeFrame.getHeight()/rows));
cellr[i].add(cell);
}
Что он показывает:
Вы можете попробовать и сначала добавить CellPanel в свой JPanel, а затем добавить JPanel в JFrame. Вы также можете избавиться от вызовов setPrefferedSize, поскольку GridLayout должен иметь возможность автоматически определять размер. –
Две вещи: вы можете предоставить свойство 'hgap' и' vgap' 'GridLayout' и не использовать размер кадра, чтобы попытаться рассчитать размер ваших компонентов, он включает в себя декорации кадров – MadProgrammer
Проблема в том, что я добавьте CellPanel в JPanel. Если я добавлю CellPanel непосредственно в mazeFrame, он отлично работает. Проблема, я думаю, с FlowLayout JPanel, который не выравнивает мою CellPanel в верхнем левом углу. – Andrew