2010-05-07 94 views
4

我有任务准备两个带有摆动的窗户。一个包含正方形网格,其中包含随机数字。在第二部分中,我需要加载平铺图片,然后以正确的顺序显示它们,形成平铺图像。摆动瓷砖图像

的Windows应该是这样的:

alt text http://img535.imageshack.us/img535/3129/lab8a.jpg

好了,怎么咬呢?我只用了几次来画出一些二维多段线,所以基本上我只是在理论上现在该做什么。

好吧,所以窗口号码1: 我开始为窗口创建Jframe。然后我做循环,并在其中创建16个随机数的JLabel?如何设置每个瓷砖和整个窗口之间的边距?

窗口号码2: 所以我开始相同,但不是加载数字我添加图像?现在,我如何从文件加载图像,然后将其设置为背景?

+0

这个问题是题外话,因为链接的图像消失。 – kay 2014-10-20 16:45:11

回答

12

以下代码使用GridLayout列出了JLabels。 GridLayout的参数如下:行,列,水平间隙,垂直间隙。在下面的例子中,我在标签之间垂直和水平方向都有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); 
    } 
} 

enter image description here

+0

+1用于添加给定代码的屏幕截图 – OscarRyz 2010-05-07 21:30:31