Hallo, kann sich einer von euch die mühe machen und folgenden keylistener anschauen. der listener unterscheidet drei arten von tastenanschlägen, zahlen von 0 bis 9, Enter, Escape, Cursor, Return Tasten und alle anderen Tasten
eigentlich unterscheidet er nur zwischen Zeichentasten, die Funktionen für add, subtract, multiply, divide und taste c
zum löschen der textfelder kommen noch. Das Problem ist das er trotz des flags das ich je nach Art der Taste im keyPressed event setze im keyReleased in einen falschen Zweig der Abfrage nach dieser springe. Es funktioniert aber nur bei den Cursor Tasten nicht, bei allen anderen schon zum Beispiel soll bei einem Cursordruck im Textfeld kein System.out "Das war keine Zahl" kommen und bei allen anderen Zahlen außerhalb von 0 und 9 außer
enter, escape und return schon. Danke für die Hilfe falls sich das wer durchschaut
eigentlich unterscheidet er nur zwischen Zeichentasten, die Funktionen für add, subtract, multiply, divide und taste c
zum löschen der textfelder kommen noch. Das Problem ist das er trotz des flags das ich je nach Art der Taste im keyPressed event setze im keyReleased in einen falschen Zweig der Abfrage nach dieser springe. Es funktioniert aber nur bei den Cursor Tasten nicht, bei allen anderen schon zum Beispiel soll bei einem Cursordruck im Textfeld kein System.out "Das war keine Zahl" kommen und bei allen anderen Zahlen außerhalb von 0 und 9 außer
enter, escape und return schon. Danke für die Hilfe falls sich das wer durchschaut
Code:
zaehler.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent key1)
{
concat = "";
int keycode = key1.getKeyChar();
if(keycode == KeyEvent.VK_ADD)
{
}
if(keycode == KeyEvent.VK_SUBTRACT)
{
}
if(keycode == KeyEvent.VK_MULTIPLY)
{
}
if(keycode == KeyEvent.VK_DIVIDE)
{
}
if(keycode == KeyEvent.VK_C)
{
concat = "";
for(int s = 0; s < zcounts - 1; s++)
{
key[s] = "";
}
zcounts = 1;
i = 0;
zaehler.setText("");
}
if(keycode >= KeyEvent.VK_0 && keycode <= KeyEvent.VK_9)
{
zflag = 0;
key[i] = String.valueOf( key1.getKeyChar() );
i++;
zcounts++;
}
else
{
switch( keycode )
{
case KeyEvent.VK_ENTER: nenner.requestFocus();
zflag = 2;
break;
case KeyEvent.VK_LEFT: zflag = 2;
break;
case KeyEvent.VK_RIGHT: zflag = 2;
break;
case KeyEvent.VK_UP: zflag = 2;
break;
case KeyEvent.VK_DOWN: zflag = 2;
break;
case KeyEvent.VK_ESCAPE: setVisible(false);
dispose();
System.exit(0);
break;
case KeyEvent.VK_BACK_SPACE: zflag = 2;
concat = "";
key[zcounts - 1] = "";
zcounts--;
i--;
break;
}
if(keycode != KeyEvent.VK_BACK_SPACE && keycode != KeyEvent.VK_ESCAPE && keycode != KeyEvent.VK_DOWN && keycode != KeyEvent.VK_UP && keycode != KeyEvent.VK_RIGHT && keycode != KeyEvent.VK_LEFT && keycode != KeyEvent.VK_ENTER)
{
System.out.println("Das war keine Zahl");
zflag = 1;
}
}
}
public void keyReleased(KeyEvent e44)
{
switch( zflag)
{
case 0 :
for(int j = 0; j < zcounts - 1; j++)
{
concat += key[j];
}
zaehler.setText( concat );
break;
case 1 :
System.out.println("Bitte geben sie einen anderen Zaehler ein");
zaehler.setText("");
break;
case 2 :
break;
}
}
});