Hey,

Guys and gulls i need help with the following asap.

I'm trying to code a checkers board in java and populate it with checkers and then paint this onto a JPanel. I then add the JPanel to my JFrame.

I am able to draw my checkers board and populate it with checkers. I do this by creating a class which extends JPanel. I then use the paint method to draw my board and checkers and then paint this onto the JPanal. I then have another class which creates the JFrame and adds the JPanel to it. However whenever I add the JPanel to the JFrame, the JPanel wont size to the size I set it at.

Below is my code. This one has really been racking my brains so help would greatly be appreciated.

Cheers

import java.awt.*;
import javax.swing.*;



public class Board extends  JPanel
{   
    public Board()
    {
        this.setSize(200, 200);
    }

    public void paint(Graphics g) 
    {
        super.paint(g);

        int row; 
        int col; 
        int x,y; 
        String type = "";

        for ( row = 1; row < 9; row++ ) 
        {

            for ( col = 1; col < 9; col++) 
            {

                x=col * 50;
                y=row * 50;

                if ( (row % 2) == (col % 2) )
                {
                    g.setColor(Color.WHITE);
                    type = "white";
                }
                else
                {
                    g.setColor(Color.BLACK);
                    type = "black";             
                }

                g.fillRect(x, y, 50, 50);



                g.setColor(Color.RED);
                if (type == "black" && (row==1 || row ==2 || row==3))
                {
                    g.drawOval(x+5, y+5, 40, 40);
                    g.fillOval(x+5, y+5, 40, 40);
                }
                else if (type == "black" && (row==6 || row ==7 || row==8))
                {
                    g.setColor(Color.BLUE);
                    g.drawOval(x+5, y+5, 40, 40);
                    g.fillOval(x+5, y+5, 40, 40);
                }
            }
        }
    }

}

import java.awt.*;
import javax.swing.*;


public class main extends JFrame
{


    public static void main(String args[]) 
    {
        Board ex = new Board();
        ex.setLayout(null);
        System.out.println(ex.getSize());

        JFrame frame = new JFrame();
        frame.setSize(600,600);
        frame.setLocationRelativeTo(null);
        frame.add(ex);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }   

}

This is a pretty common mystery area, because different layout managers have different behaviour in terms of overriding the size to fit the layout. You may have better luck with setMinimumSize(...)

Edited 4 Years Ago by JamesCherrill

@rossi1114:

i can't understand your problem
will you please tell me what actually you want your output?
your code is working perfectly, so what's your demand?

This article has been dead for over six months. Start a new discussion instead.