【发布时间】:2016-07-04 01:21:41
【问题描述】:
正如标题中所写,我有一个带有 GridLayout 的 JPanel,它将每个元素都显示在其他元素之上。我检查并发现每个 CityPanel 都是 160x185 像素,而主 JPanel(容器)是 960x556 面板。有什么错误?
public class MapPanel extends JPanel {
private static final long serialVersionUID = 1L;
private CityPanel[][] cityPanels;
public MapPanel() {
super();
...
createLayout();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
this.setSize(super.getWidth(), super.getHeight());
mapGrid.setSize(super.getWidth(), super.getHeight());
for(int i = 0; i < cityPanels.length; i++) {
for(int j = 0; j < cityPanels[i].length; j++) {
cityPanels[i][j].paintComponent(g);
}
}
}
private void createLayout() {
int columns = 6;
int rows = 6;
GridLayout layout = new GridLayout(rows, columns);
this.setLayout(layout);
cityPanels = new CityPanel[rows][columns]; //CityPanel extends JPanel
for (int r = 0; r < rows; r++) {
for (int c = 0; c < columns; c++) {
cityPanels[r][c] = new CityPanel();
add(cityPanels[r][c]);
}
}
for (City city : cities) {
cityPanels[mapGrid.getRow(city) - 1][mapGrid.getColumn(city) - 1].initialize(city, mapGrid);
}
}
}
【问题讨论】:
-
如需尽快获得更好的帮助,请发帖 minimal reproducible example 或 Short, Self Contained, Correct Example。请注意,这不是您认为相关的随机代码位。它也不是“你所有的代码”。在准备 MCVE/SSCCE 之前,请仔细阅读链接文档。
标签: java swing layout-manager grid-layout