Я программирую игру на 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);
}
}
}
}