Ciao a tutti.
Dopo essere un po' impazzita sono riuscita a scrivere questo programmino che disegna un rettangolo o un ovale a seconda del tasto premuto.
Vorrei modificare il programma in modo che sia possibile digitare un solo ed unico carattere e non una stringa.
Non riesco a trovare un metodo pronto. Pensavo di poter chiudere

testo += e.getKeyChar();
repaint();

all'interno di un ciclo, solo che il risultato è che non digita proprio niente. Potete indicarmi la strada su cui continuare ad impazzire?


codice:
public class EsercizioDue extends Frame implements KeyListener
{
	Ascoltatore asc = new Ascoltatore();
	String testo ="";
	
	
	public static void main (String args[])
	{
		EsercizioDue ist = new EsercizioDue();		
	}
	
	EsercizioDue()
	{
		setBounds(5,10,500,300);
		setTitle ("Esercizio Due");
		addWindowListener(asc);
//		addKeyListener(this);
		setVisible(true);		
	}	
	
	public void keyPressed (KeyEvent e)
	{		
	}
	public void keyReleased (KeyEvent e)
	{		
	}
	public void keyTyped (KeyEvent e)
	{	
		testo += e.getKeyChar();
		repaint();
	}
	
	public void paint (Graphics g)
	{		
		g.setColor(Color.red);
		g.drawString("Digita una R per disegnare un rettangolo oppure uno O per un ovale", 20, 40);
		g.setColor(Color.black);
		g.drawString(testo, 30, 80);		
		
		addKeyListener(this);
		if (testo.equalsIgnoreCase("r"))
			g.drawRect(20, 80, 400, 200);
		if (testo.equalsIgnoreCase("o"))
			g.drawOval(20, 80, 400, 200);
//		else 
//			System.out.println("Hai digitato un tasto non corretto");
		
	}
	
	class Ascoltatore extends WindowAdapter
	{
		public void windowClosed (WindowEvent e)
		{
			System.exit(0);
		}
		public void windowClosing (WindowEvent e)
		{
			e.getWindow().dispose();
		}
	}
}