Создание JFrame для отображения шахматной доски - PullRequest
1 голос
/ 11 февраля 2011

Мое задание состоит в следующем:

Цель состоит в том, чтобы поместить доску для проверки в окне на экране.Мне даны два класса с именами PicturePanel и Pixel

, класс PicturePanel расширяет JPanel с немного большей функциональностью, используя класс с именем Pixel

. Моя идея для выполнения этой задачи состояла в том, чтобы сделать пятьдесят квадратных 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();

   }
}

При запуске он отображает только белое поле и красное поле

как мне отформатировать шахматную доску, чтобы увидеть два цвета?

Ответы [ 2 ]

3 голосов
/ 11 февраля 2011

Вы добавляете те же два квадрата снова и снова. Вместо этого создайте новые квадраты в цикле и добавьте их. Пример:

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

}
1 голос
/ 12 февраля 2011

Это не относится к вашему заданию, но вы можете рассмотреть альтернативный подход к покраске шахматной доски, показанный здесь и здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...