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();
}
}
}