Ik zit met een raar probleempje. Ik ben in Java een RPN (Reverse Polish Notation) calculator aan het maken als opdracht voor school. Ik heb nu de GUI helemaal af maar ik moest hem laten werken met het toetsenbord.
Op zich werkt alles, maar als ik 1 keer op een knop drukt registreert hij dat 3 keer.
Dus als ik 1 keer op 4 druk krijg ik 444.
Als ik 1 keer op * druk probeert hij 3 keer te vermenigvuldigen.
Het volgende staat in de constructor van de klasse
En dit is een interne klasse in dezelfde klasse als die van de constructor
Na deze methode kan het in principe niet meer fout gaan omdat in de daarop volgende methodes ook het handmatig met de muis op knoppen drukken afgehandeld wordt en daar 1 keer drukken gewoon 1 keer is.
Ik heb al gezocht naar mensen met hetzelfde probleem maar kon niets vinden.
Op zich werkt alles, maar als ik 1 keer op een knop drukt registreert hij dat 3 keer.
Dus als ik 1 keer op 4 druk krijg ik 444.
Als ik 1 keer op * druk probeert hij 3 keer te vermenigvuldigen.
Het volgende staat in de constructor van de klasse
Java:
1
2
| KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager(); kfm.addKeyEventDispatcher(new KeyEvents()); |
En dit is een interne klasse in dezelfde klasse als die van de constructor
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| private class KeyEvents implements KeyEventDispatcher{ public boolean dispatchKeyEvent(KeyEvent e) { if(Character.isDigit(e.getKeyChar()) || e.getKeyChar() == '.' || e.getKeyChar() == '\n') { pnlNumberInput.keyPressed(e.getKeyChar()); return true; } if(e.getKeyChar() == '+' || e.getKeyChar() == '-' || e.getKeyChar() == '*' || e.getKeyChar() == '/' || e.getKeyChar() == '^') { pnlOperators.keyPressed("" + e.getKeyChar()); return true; } return false; } } |
Na deze methode kan het in principe niet meer fout gaan omdat in de daarop volgende methodes ook het handmatig met de muis op knoppen drukken afgehandeld wordt en daar 1 keer drukken gewoon 1 keer is.
Ik heb al gezocht naar mensen met hetzelfde probleem maar kon niets vinden.