【发布时间】:2011-12-06 21:00:54
【问题描述】:
已解决:
在尝试制作 SSCCE 后才发现问题所在。
这与我的单元格类有关,我没有意识到我正在覆盖 JComponent 类中的 getX() 和 getY()。
重命名这些访问器后,一切都按预期工作
=========================================
我有一个 GridLayout 设置为 3 行 x 3 列的 JPanel。
我正在尝试将 JPanel 添加到网格布局中的每个单元格以填满所有 9 个单元格。 这些 JPanel 中的每一个都有一个覆盖的 paintChildren 方法,该方法将从 JPanel 的左上角开始绘制某种矩形 - 最终结果将是每个单元格中都有一个从单元格的左上角开始的矩形。
将所有 JPanel 添加到 gridlayout 后,它们都出现在左上角相互重叠(我已经确认它们是重叠的),而不是以 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);
}
}
【问题讨论】:
-
"(Simplified) Code:" 为了尽快获得更好的帮助,请发布SSCCE,而不是无法编译的代码sn-ps。
-
看看these notes。它们带有示例,还涵盖了面板布局等。
标签: java swing user-interface awt grid-layout