ciao a tutti sto realizzando un progetto che consiste nell'implementazione del gioco del tris..il progetto l'ho finito solo che non riesco a far visualizzare il mome del giocatore cui spetta il turno all'interno del frame; il nome viene chiesto all'inizio della partita ma dopo nn capisco come farlo visualizzare nel frame..vi posto il codice:

codice:
import java.awt.Canvas;     
import java.awt.Color;     
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;
import javax.swing.JOptionPane;
import javax.swing.JFrame;


public class Tris extends JFrame
{
	
	private static class GameBoard extends Canvas 
	{
		private static final int VUOTO = 0;
		private static final int GIOCATOREX = 1;
		private static final int GIOCATOREO = 2;
		private int[][] Grigliagioco = new int[3][3]; // Griglia del gioco
		private boolean TurnoX; // Valore booleano che stabilisce se è il turno di X o meno
		private Random random; // generatore random che definisce quale giocatore inizia la partita
		private boolean gameRunning; // Definisce se il gioco è in progresso
		private int Risultato; // Risultato
		/**
		 * Catturiamo gli eventi del mouse
		 */
		private class GameListener implements MouseListener   //eventi di movimento del mouse  
		{
			public void mousePressed(MouseEvent e){}  //chiamato quando un pulsante del mouse è stato premuto su un componente
			public void mouseClicked(MouseEvent e)  //chiamato quando un pulsante del mouse è stato premuto e rilasciato in rapida successione su un componente
			{
				// Controlla la posizione al clic del mouse
				int xPos = e.getPoint().x;
				int yPos = e.getPoint().y;
				// Controlla la grigla del gioco
				if(xPos > 50 && yPos > 50 && xPos < 50+50*3 && yPos < 50+50*3)
				{
					// Controlla se il gioco è stato avviato 
					if(gameRunning == false)
					{
						// Nuovo Gioco
						newGame();
						gameRunning = true;
						repaint();
						return;
					}
					// Controlla un posto vuoto
					if(Grigliagioco[xPos/50-1][yPos/50-1] != VUOTO)
						return; 
					// Mette X oppure O per il turno corrente poi si alterna
					if(TurnoX)
					{
						Grigliagioco[xPos/50-1][yPos/50-1] = GIOCATOREX;
						TurnoX = false;
					}
					else
					{
						Grigliagioco[xPos/50-1][yPos/50-1] = GIOCATOREO;
						TurnoX = true;
					}
					// Controllo del giocatore vincente
					Risultato = gameOver();
					if(Risultato != 0)
					{
						// Il gioco è finito
						gameRunning = false;
					}
					// Ridisegna la griglia
					repaint();
				}
			}
			public void mouseReleased(MouseEvent e){} //chiamato quando un pulsante del mouse è stato rilasciato da un componente
			public void mouseEntered(MouseEvent e){}  //chiamato quando il mouse entra in un componente
			public void mouseExited(MouseEvent e){}   //chiamato quando il mouse esce da un componente
		}
		/**
		 * Crea una nuova griglia del gioco
		 */
		public GameBoard()
		{
			// Imposta la dimensione e il colore di background
			setPreferredSize(new Dimension(256,256));
			setBackground(Color.WHITE);
			// Aggiungi eventi del mouse
			addMouseListener(new GameListener());
			// Crea un generatore random
			random = new Random();
			// Nuovo gioco
			newGame();
			// Controllo stato del gioco
			gameRunning = true;
		}
		/**
		 * Cancella la griglia del gioco
		 * Imposta generatore casuale per il prossimo giocatore
		 */
		public void newGame()
		{
			// Griglia gioco
			for(int y = 0;y < 3;y++)
				for(int x = 0;x < 3;x++)
					Grigliagioco[x][y] = VUOTO;
			// Selezione giocatore
			if(random.nextInt(2) < 3)
				TurnoX = true;
			else
				TurnoX = false;
		}
		/**
		 * Controlla per vedere se il gioco è terminato.
		 * 
		 * @return Se il gioco è terminato o meno. 0 = Non è finito, 1 = X ha vinto, 2 = O ha vinto, 3 = parità_
		 */
		int gameOver()
		{
			// Verifica
			for(int x = 0;x < 3;x++) // Righe
				if(Grigliagioco[x][0] == Grigliagioco[x][1] && Grigliagioco[x][1] == Grigliagioco[x][2])
					return Grigliagioco[x][0];
			for(int y = 0;y < 3;y++) // Colonne
				if(Grigliagioco[0][y] == Grigliagioco[1][y] && Grigliagioco[1][y] == Grigliagioco[2][y])
					return Grigliagioco[0][y];
			// Diagonale
			if(Grigliagioco[0][0] == Grigliagioco[1][1] && Grigliagioco[1][1] == Grigliagioco[2][2])
				return Grigliagioco[0][0];
			if(Grigliagioco[2][0] == Grigliagioco[1][1] && Grigliagioco[0][2] == Grigliagioco[1][1])
				return Grigliagioco[2][0];
			// Controlla la parità_
			for(int y = 0;y < 3;y++)
				for(int x = 0;x < 3;x++)
					if(Grigliagioco[x][y] == 0)
						return 0; // IL gioco non è in parità_ perchè ci sono spazi vuoti
			// Il gioco è in parità 
			return 3;
		}


		/**
		 * Disegniamo il gioco
		 */
		public void paint(Graphics g)
		{
			
			// Disegniamo le linee
			g.setColor(Color.BLACK);
			for(int y = 1;y < 3;y++)
				g.drawLine(50,y*50+50,50+50*3,y*50+50);
			for(int x = 1;x < 3;x++)
				g.drawLine(x*50+50,50,x*50+50,50+50*3);
			// Disegniamo il giocatore X e il giocatore Y 
			for(int y = 0;y < 3;y++)
			{
				for(int x = 0;x < 3;x++)
				{
					if(Grigliagioco[x][y] == GIOCATOREX)
					{
						g.setColor(Color.BLUE);
						g.drawLine(50+x*50,50+y*50,50+x*50+50,50+y*50+50);
						g.drawLine(50+50+x*50,50+y*50,50+x*50,50+y*50+50);
					}
					if(Grigliagioco[x][y] == GIOCATOREO)
					{
						g.setColor(Color.RED);
						g.drawOval(50+x*50,50+y*50,50,50);
					}
				}
			}
			// Controlla i turni
			
	                
			
			g.setColor(Color.RED);
			if(gameRunning)
			{
				// Turno dei giocatori
				if(TurnoX)
					g.drawString("Tocca al giocatore X",10,20);
				else
					g.drawString("Tocca al giocatore O",10,20);
			}
			else
			{
				// Messaggio fine partita
				if(Risultato == GIOCATOREX)
					g.drawString("Il giocatore X ha vinto!",10,20);
				if(Risultato == GIOCATOREO)
					g.drawString("Il giocatore O ha vinto!",10,20);
				if(Risultato == 3)
					g.drawString("Parità_!",10,20);
				
				
			}
		}
	}
		
	public static void main(String[] args)
	
	{
		// Crea una nuova finestra per il gioco del tris
		Tris ticTacToe = new Tris();
		ticTacToe.setTitle("Gioco del Tris");
		String nomeGiocatoreX = JOptionPane.showInputDialog("Inserisci il nome del giocatore X.");
		String nomeGiocatoreO = JOptionPane.showInputDialog("Inserisci il nome del giocatore 0");
		ticTacToe.setPreferredSize(new Dimension(256,256));
		ticTacToe.setBackground(Color.WHITE);
		ticTacToe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// Aggiungi la griglia del gioco
		GameBoard gameBoard = new GameBoard();
		ticTacToe.add(gameBoard);
		// Visualizza il frame nella dimensione impostata
		ticTacToe.pack();
		ticTacToe.setVisible(true);
	}
}