Hej!

Mam dwie klasy, które są początkiem gry kółko krzyżyk. Jedna wyświetla plansze do gry, druga rysuje linie na tej planszy za pomocą drawLine obiektu typu Graphics. Aby linie pojawiły się na planszy, po prostu tworzony jest w konstruktorze obiekt klasy rysującej linie.
Co zrobić, żeby metodą np. drawOval rysować kółka, gdy wciśnie się odpowiedni przycisk, czyli co wpisać do actionPerformed i co dopisać do klasy rysującej? Czy może muszę utworzyć osobną klasę do rysowania kółek i krzyżyków?

EDIT:
NOWY KOD NIŻEJ!
Nowy problem to taki, że nie wiem jak zrobić żeby zostawało to co było już narysowane, czyli jak wcisnę przycisk rysujący kółko, to żeby po wciśnięciu krzyżyka tamto kółko zostało narysowane i krzyżyk też się pojawił, no wiadomo o co chodzi. Bo teraz jak rysuje się nowe to stare znika.

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class GUI implements ActionListener {

	public GUI() { // konstruktor
		rysuj rys = new rysuj();
		JFrame frame = new JFrame();

		BorderLayout layout = new BorderLayout();
		frame.getContentPane().setLayout(layout);
		frame.setSize(400, 170);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		JButton[] przO = new JButton[9];
		JButton[] przX = new JButton[9];

		JPanel lewa = new JPanel(new GridLayout(3, 3));
		JPanel prawa = new JPanel(new GridLayout(3, 3));

		for (int i = 0; i < 9; i++) {
			przO[i] = new JButton("0");
			przX[i] = new JButton("X");
			lewa.add(przO[i], i);
			prawa.add(przX[i], i);
			przO[i].addActionListener(this);
			przO[i].setActionCommand("przycisk_O" + i);
			przX[i].addActionListener(this);
			przX[i].setActionCommand("przycisk_X" + i);
		}

		frame.getContentPane().add(prawa, BorderLayout.EAST);
		frame.getContentPane().add(lewa, BorderLayout.WEST);
		frame.getContentPane().add(rys, BorderLayout.CENTER);
		frame.setVisible(true);

	}

	public static void main(String arg[]) {
		javax.swing.SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				new GUI();
			}

		});
	}

	public void actionPerformed(ActionEvent zdarzenie) { // metoda obsługująca

		if ("przycisk_X1".equals(zdarzenie.getActionCommand())) {

		}

	}
}

i rysująca linie:

import java.awt.Graphics;

public class rysuj extends JLabel {

	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.drawLine(45, 0, 45, 165);
		g.drawLine(95, 0, 95, 165);
		g.drawLine(0, 45, 165, 45);
		g.drawLine(0, 90, 150, 90);
	}
}

EDIT:

poradziłem sobie w taki sposób:

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class GUI extends JFrame implements ActionListener {
	
	private String  stan=" ";
	
	public static void main(String arg[]) {
		javax.swing.SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				new GUI();
			}
		});
	}
	JButton[] przO = new JButton[10];
	JButton[] przX = new JButton[10];
	
	public GUI() { // konstruktor
		super("Kółko krzyżyk");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(new BorderLayout());
		add(new rysuj(this),BorderLayout.CENTER);
		
		//JFrame frame = new JFrame();
		//frame.setSize(400, 170);
		
		JPanel lewa = new JPanel(new GridLayout(3, 3));
		JPanel prawa = new JPanel(new GridLayout(3, 3));

		for (int i = 1; i < 10; i++) {
			przO[i] = new JButton("0");
			przX[i] = new JButton("X");
			lewa.add(przO[i]);
			prawa.add(przX[i]);
			przO[i].addActionListener(this);
			przO[i].setActionCommand("przycisk_O" + i);
			przX[i].addActionListener(this);
			przX[i].setActionCommand("przycisk_X" + i);
		}
		System.out.println(przO[3].getActionCommand());
		add(prawa, BorderLayout.EAST);
		add(lewa, BorderLayout.WEST);

		pack();
		setLocationRelativeTo(null);
		setVisible(true);
	}

	public String  getStan()
    {
        return stan;
    }
	
	public void actionPerformed(ActionEvent ae) { // metoda obsługująca
		
		String cmd=ae.getActionCommand();
				
			if (cmd.equals("przycisk_O1")) {stan = "O1"; przO[1].setEnabled(false); przX[1].setEnabled(false);}
			if (cmd.equals("przycisk_O2")) {stan = "O2"; przO[2].setEnabled(false); przX[2].setEnabled(false);}
			if (cmd.equals("przycisk_O3")) {stan = "O3"; przO[3].setEnabled(false); przX[3].setEnabled(false);}
			if (cmd.equals("przycisk_O4")) {stan = "O4"; przO[4].setEnabled(false); przX[4].setEnabled(false);}
			if (cmd.equals("przycisk_O5")) {stan = "O5"; przO[5].setEnabled(false); przX[5].setEnabled(false);}
			if (cmd.equals("przycisk_O6")) {stan = "O6"; przO[6].setEnabled(false); przX[6].setEnabled(false);}
			if (cmd.equals("przycisk_O7")) {stan = "O7"; przO[7].setEnabled(false); przX[7].setEnabled(false);}
			if (cmd.equals("przycisk_O8")) {stan = "O8"; przO[8].setEnabled(false); przX[8].setEnabled(false);}
			if (cmd.equals("przycisk_O9")) {stan = "O9"; przO[9].setEnabled(false); przX[9].setEnabled(false);}
			
			if (cmd.equals("przycisk_X1")) {stan = "X1"; przX[1].setEnabled(false); przO[1].setEnabled(false);}
			if (cmd.equals("przycisk_X2")) {stan = "X2"; przX[2].setEnabled(false); przO[2].setEnabled(false);}
			if (cmd.equals("przycisk_X3")) {stan = "X3"; przX[3].setEnabled(false); przO[3].setEnabled(false);}
			if (cmd.equals("przycisk_X4")) {stan = "X4"; przX[4].setEnabled(false); przO[4].setEnabled(false);}
			if (cmd.equals("przycisk_X5")) {stan = "X5"; przX[5].setEnabled(false); przO[5].setEnabled(false);}
			if (cmd.equals("przycisk_X6")) {stan = "X6"; przX[6].setEnabled(false); przO[6].setEnabled(false);}
			if (cmd.equals("przycisk_X7")) {stan = "X7"; przX[7].setEnabled(false); przO[7].setEnabled(false);}
			if (cmd.equals("przycisk_X8")) {stan = "X8"; przX[8].setEnabled(false); przO[8].setEnabled(false);}
			if (cmd.equals("przycisk_X9")) {stan = "X9"; przX[9].setEnabled(false); przO[9].setEnabled(false);}
		repaint();
	}
}
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JLabel;

public class rysuj extends JLabel {

		private GUI parent;
		
		public rysuj (GUI parent){
			super();
	        this.parent=parent;
	        setPreferredSize(new Dimension(140,140));
		}
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.drawLine(45, 0, 45, 165);
		g.drawLine(95, 0, 95, 165);
		g.drawLine(0, 45, 165, 45);
		g.drawLine(0, 90, 150, 90);
		
		if(parent.getStan().equals("O1"))	g.drawOval(12,12,20,20);
		if(parent.getStan().equals("O2"))	g.drawOval(60,12,20,20);
		if(parent.getStan().equals("O3"))	g.drawOval(108,12,20,20);
		if(parent.getStan().equals("O4"))	g.drawOval(12,60,20,20);
		if(parent.getStan().equals("O5"))	g.drawOval(60,60,20,20);
		if(parent.getStan().equals("O6"))	g.drawOval(108,60,20,20);
		if(parent.getStan().equals("O7"))	g.drawOval(12,108,20,20);
		if(parent.getStan().equals("O8"))	g.drawOval(60,108,20,20);
		if(parent.getStan().equals("O9"))	g.drawOval(108,108,20,20);
		
		if(parent.getStan().equals("X1"))	{g.drawLine(12,12,32,32);   g.drawLine(12, 32, 32, 12);}
		if(parent.getStan().equals("X2"))	{g.drawLine(60,12,80,32);   g.drawLine(60, 32, 80, 12);}
		if(parent.getStan().equals("X3"))	{g.drawLine(108,12,128,32); g.drawLine(108, 32, 128, 12);}
		if(parent.getStan().equals("X4"))	{g.drawLine(12,60,32,80);   g.drawLine(12, 80, 32, 60);}
		if(parent.getStan().equals("X5"))	{g.drawLine(60,60,80,80);   g.drawLine(60, 80, 80, 60);}
		if(parent.getStan().equals("X6"))	{g.drawLine(108,60,128,80); g.drawLine(108, 80, 128, 60);}
		if(parent.getStan().equals("X7"))	{g.drawLine(12,108,32,128);  g.drawLine(12, 128, 32, 108);}
		if(parent.getStan().equals("X8"))	{g.drawLine(60,108,80,128);  g.drawLine(60, 128, 80, 108);}
		if(parent.getStan().equals("X9"))	{g.drawLine(108,108,128,128); g.drawLine(108, 128, 128, 108);}
		
	}
}


Dobra sobie poradziłem. Dodałem tablicę stanów i metodę ją sprawdzającą. Pozdro!