2011-02-11 29 views
1

我的任務詳細如下:創建JFrame以顯示棋盤

目標是將棋盤放在屏幕上的窗口中。 我給出兩個類叫做PicturePanel和Pixel

類PicturePanel用一種叫做像素級擴展JPanel帶着一點點更多的功能

我完成這個任務的想法是使每種顏色的五十平方英尺的PicturePanels和交替地將它們添加到一個大面板上,然後將該面板添加到我的JFrame對象。

這裏是我的代碼:

public class BlueSquare extends PicturePanel 
{ 

    public BlueSquare() 
    { 
    this.setSize(50,50); 
    setAllPixelsToAColor(0,0,255); 
    } 

} 


public class RedSquare extends PicturePanel 
{ 

    public RedSquare() 
    { 
    this.setSize(50,50); 
    setAllPixelsToAColor(0,255,0); 
    } 

} 

public class BigPanel extends PicturePanel 
{ 
    public BigPanel() 
    { 
    RedSquare rs = new RedSquare(); 
    BlueSquare bs = new BlueSquare(); 

    for(int i=0; i<50;i++) 
    { 
     add(rs); 
     add(bs); 
    } 
} 

public class CheckerBoard extends JFrame 
{ 

    public CheckerBoard() 
    { 
    setTitle("Checker Board"); 
    setSize(500,500); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    BigPanel bp = new BigPanel(); 

    add(bp); 
    this.setVisible(true); 

    } 


    public static void main(String args[]) 
    { 
     CheckerBoard cb = new CheckerBoard(); 

    } 
} 

在運行時只顯示一個白色的盒子和一個紅色的盒子

我怎麼可以格式化棋盤看到兩種顏色?

+0

setAllPixelsToAColor()是做什麼的? – jzd 2011-02-11 18:46:36

+0

它將所有像素更改爲RGB值 – jth41 2011-02-11 20:19:57

回答

3

您正在一次又一次添加相同的兩個方塊。請在循環中創建新方塊並添加它們。例如:

for(int i=0; i<50;i++){ 
    add(new RedSquare()); 
    add(new BlueSquare()); 

} 
1

這不是中肯你的任務,但你可能想研究這個替代的方法來畫一個棋盤,顯示herehere