use WindowAdpater to avoid superfluous empty method overriding
KeyListener -> KeyAdapter refactor