2010-05-07 141 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