Как добавить объекты на jpanel? - PullRequest
0 голосов
/ 22 апреля 2020

Я программирую игру на ti c ta c toe, и у меня проблема с методом перекраски, который вообще не работает. Я вполне уверен, что это потому, что объекты, которые я хочу перекрасить, не находятся на jpanel? Как можно go добавить объекты в jpanel? Он не позволяет мне добавлять боксовые классы из массива, потому что они не являются обычными j-компонентами, так как же мне go добавить их, чтобы они были затронуты repaint ()? Спасибо.

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.Random;
public class ClassThatExtendsJPanel extends JPanel implements ActionListener, MouseListener
{
    Random r = new Random();
    int turn = 0;//r.nextInt(2);
    JPanel panel;
    box boxs[][] = new box[3][3];
    public ClassThatExtendsJPanel()
    {
        addMouseListener(this);
        panel = new JPanel();
        panel.setBounds(40,80,200,200);
        int x = 0;
        int y = 0;
        for (int row = 0; row < 3; row++)
        {
            for (int col = 0; col < 3; col++)
            {
                boxs[row][col] = new box(0,x,y);
                panel.add(boxs[row][col]);
                x = x+75;
                if (x == 225)
                {
                    y = y+75;
                    x = 0;
                }
                repaint();
            }
        }
    }
    public void actionPerformed(ActionEvent e)
    {

    }
    public void mouseClicked(MouseEvent e)
    {
        if (e.getX() < 75 && e.getY() < 75)
        {
            if (boxs[0][0].getState() == 0)
            {
                if (turn == 0)
                {
                    boxs[0][0].changeState(0);
                    turn = 1;
                }
                else
                {
                    boxs[0][0].changeState(1);
                    turn = 0;
                }
                repaint();
            }
        }
        if (e.getX() > 75 && e.getY() < 75)
        {
            if (e.getX() < 150)
            {
                if (boxs[0][1].getState() == 0)
                {
                    if (turn == 0)
                    {
                        boxs[0][1].changeState(0);
                        turn = 1;
                    }
                    else
                    {
                        boxs[0][1].changeState(1);
                        turn = 0;
                    }
                    repaint();
                }
            }
        }
        if (e.getX() < 225)
        {
            if (e.getX() > 150 && e.getY() < 75)
            {
                if (boxs[0][2].getState() == 0)
                {
                    if (turn == 0)
                    {
                        boxs[0][2].changeState(0);
                        turn = 1;
                    }
                    else
                    {
                        boxs[0][2].changeState(1);
                        turn = 0;
                    }
                    repaint();
                }
            }
        }
        if (e.getX() < 75 && e.getY() < 150)
        {
            if (e.getY() > 75)
            {
                if (boxs[1][0].getState() == 0)
                {
                    if (turn == 0)
                    {
                        boxs[1][0].changeState(0);
                        turn = 1;
                    }
                    else
                    {
                        boxs[1][0].changeState(1);
                        turn = 0;
                    }
                    repaint();
                }
            }
        }
        if (e.getX() < 150 && e.getY() < 150)
        {
            if (e.getX() > 75 && e.getY() > 75)
            {
                if (boxs[1][1].getState() == 0)
                {
                    if (turn == 0)
                    {
                        boxs[1][1].changeState(0);
                        turn = 1;
                    }
                    else
                    {
                        boxs[1][1].changeState(1);
                        turn = 0;
                    }
                    repaint();
                }
            }
        }
        if (e.getX() < 225 && e.getY() < 150)
        {
            if (e.getX() > 150 && e.getY() > 75)
            {
                if (boxs[1][2].getState() == 0)
                {
                    if (turn == 0)
                    {
                        boxs[1][2].changeState(0);
                        turn = 1;
                    }
                    else
                    {
                        boxs[1][2].changeState(1);
                        turn = 0;
                    }
                    repaint();
                }
            }
        }
        if (e.getX() < 75 && e.getY() < 225)
        {
            if (e.getY() > 150)
            {
                if (boxs[2][0].getState() == 0)
                {
                    if (turn == 0)
                    {
                        boxs[2][0].changeState(0);
                        turn = 1;
                    }
                    else
                    {
                        boxs[2][0].changeState(1);
                        turn = 0;
                    }
                    repaint();
                }
            }
        }
        if (e.getX() < 150 && e.getY() < 225)
        {
            if (e.getX() > 75 && e.getY() > 150)
            {
                if (boxs[2][1].getState() == 0)
                {
                    if (turn == 0)
                    {
                        boxs[2][1].changeState(0);
                        turn = 1;
                    }
                    else
                    {
                        boxs[2][1].changeState(1);
                        turn = 0;
                    }
                    repaint();
                }
            }
        }
        if (e.getX() < 225 && e.getY() < 225)
        {
            if (e.getX() > 150 && e.getY() > 150)
            {
                if (boxs[2][2].getState() == 0)
                {
                    if (turn == 0)
                    {
                        boxs[2][2].changeState(0);
                        turn = 1;
                    }
                    else
                    {
                        boxs[2][2].changeState(1);
                        turn = 0;
                    }
                    repaint();
                }
            }
        }

    }
    public void mousePressed(MouseEvent e)
    {

    }
    public void mouseReleased(MouseEvent e)
    {

    }
    public void mouseEntered(MouseEvent e)
    {
    }
    public void mouseExited(MouseEvent e)
    {
    }
    public void paintComponent(Graphics g)
    {
        for (int row = 0; row < 3; row++)
        {
            for (int col = 0; col < 3; col++)
            {
                boxs[row][col].Draw(g);
            }
        }
    }
}         
...