我有任务准备两个带秋千的窗户。一个包含正方形网格,其中包含随机数。第二,我需要加载平铺图像,然后以正确的顺序显示它们,形成平铺图像。
Windows应如下所示:
alt text http://img535.imageshack.us/img535/3129/lab8a.jpg
好的,怎么咬这个?我只使用了几次摆动来绘制一些二维折线,所以基本上我理论上现在该做什么。
好的,所以窗口编号1: 我首先为窗口创建Jframe。然后我做循环,并在其中创建16个JLabel随机数字?如何在每个图块和整个窗口之间设置边距?
第2号窗口: 所以我开始相同,但不是加载数字我添加图像?现在,我如何从文件加载图像然后将其设置为背景?
答案 0 :(得分:12)
以下代码使用GridLayout
布局JLabel。 GridLayout
的参数如下:rows,cols,horizontal gap,vertical gap。在下面的例子中,我在垂直和水平标签之间有3个像素宽的间隙。
要使用图像而不是数字,您可以将ImageIcon
传递给JLabel的构造函数而不是文本。
然而,看起来你正在做一个用户应该可以点击瓷砖的游戏。这表明您可能应该使用按钮而不是标签,但这取决于您: - )
import java.awt.GridLayout;
import javax.swing.*;
import javax.swing.border.BevelBorder;
public class FrameTest {
public static void main(String[] args) {
final JFrame f = new JFrame("Frame Test");
JPanel panel = new JPanel(new GridLayout(4, 4, 3, 3));
for (int i = 0; i < 16; i++) {
JLabel l = new JLabel("" + i, JLabel.CENTER);
//JLabel l = new JLabel(new ImageIcon("image_file.png"), JLabel.CENTER);
l.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
l.setFont(l.getFont().deriveFont(20f));
panel.add(l);
}
f.setContentPane(panel);
f.setSize(200, 200);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}