【发布时间】:2013-01-11 14:38:19
【问题描述】:
试图创建一个gridLayout并用图像填充它,哪里出错了?
ImageIcon grassIcon = new ImageIcon("images/grass_tile.jpg");
JPanel panel = new JPanel(new GridLayout(haps,snaps,0,0));
JLabel labels[] = new JLabel[(haps*snaps)];
for (int i = 0; i < haps*snaps; i++)
{
labels[i] = new JLabel(grassIcon);
panel.add(labels[i]);
}
frame.add(panel);
【问题讨论】:
-
你看到了什么?错误 ?你调用 frame.pack() 吗?
-
frame.pack() 完成了这项工作!但是如何以及为什么?到文档!!!谢谢。
-
@JesperTuborgMadsen :至于为什么会发生,在 Swing 中创建组件时,它是无效的,即它的有效属性是假的。当组件的宽度、高度、位置和内容都已确定时,该组件就被认为是有效的。这通常通过直接或间接调用他们的 validate() 方法来完成。当我们在容器上调用 validate() 时,它将通过调用其 doLayout() 方法来验证容器(如果它无效),该方法通常会调用 LayoutManager。
-
Continued... : 现在每个放置在这个容器上的孩子都会被递归地验证,这样整个树就会被布局并且变得有效。这里调用@987654323 @ 将组件的
invalid state间接更改为valid state。更多信息可以在这个thread上找到
标签: java swing loops grid-layout imageicon