Vonalkódolvasási hiba megoldása (ALT mód javítása)

    A Java-ban már rég óta hiba az ALT + NUM PAD módban való adatbevitel, ugyanis a KEY_TYPED typusú billentyűeseményekben random számok jelennek meg. Ez gyakorlatilag lehetetlenné tette a vonalkódolvasók használatát, ugyanis a legtöbb ALT módot használ.

    Megoldás

    KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(
                        new AltBugFixKeyEventDispatcher());

     

    public class AltBugFixKeyEventDispatcher implements KeyEventDispatcher {
    
        private int i = -1;
    
        @Override
        public boolean dispatchKeyEvent(KeyEvent ke) {
            if (ke.isAltDown()) {
                switch (ke.getID()) {
                    case KeyEvent.KEY_PRESSED:
                        if(ke.getKeyCode() == KeyEvent.VK_ALT){
                            i = 0;
                        }else if(Character.isDigit(ke.getKeyChar())){
                            i++;
                        }else{
                            i = -1;
                        }
                        break;
                    case KeyEvent.KEY_RELEASED:
                        break;
                    case KeyEvent.KEY_TYPED:
                        break;
                }
                if(i != -1){
                    return true;
                }
            }
            return false;
        }
    }

     

    Tags: