繁体   English   中英

Java事件监听器(鼠标和键盘)

[英]Java Event listeners (mouse and keyboard)

所以我的程序中的所有东西都可以工作,除了鼠标和键盘监听器。 我有一些关于Jbuttons的actionListeners正在做我正在尝试做的事情,但是作业说它必须与所有三个一起工作。 所以我想知道为什么编译,但不起作用。 难道我做错了什么?

panel.addKeyListener(new KeyListener() {
        @Override
        public void keyTyped(KeyEvent e) {

        }

        @Override
        public void keyPressed(KeyEvent e) {
             if(e.getKeyCode() == KeyEvent.VK_UP){
                shape.addSides();
            }
            if(e.getKeyCode() == KeyEvent.VK_DOWN){
                shape.subSides();
            }
        }

        @Override
        public void keyReleased(KeyEvent e) {

        }

    }

    );
    panel.addMouseListener(new MouseListener(){
        @Override
        public void mouseEntered(MouseEvent e){
            if(e.getButton() == MouseEvent.BUTTON1){

                shape.addSides();
            }
            if(e.getButton() == MouseEvent.BUTTON3){

                shape.subSides();
            }

        }

        @Override
        public void mouseClicked(MouseEvent e) {

        }

        @Override
        public void mousePressed(MouseEvent e) {   
        }

        @Override
        public void mouseReleased(MouseEvent e) {
        }

        @Override
        public void mouseExited(MouseEvent e) {
        }

    }
    );

关于KeyListener:除非被监听的组件是可聚焦的并且具有焦点,否则它将不起作用。 因此,您需要在JPanel上调用setFocusable(true)requestFocusInWindow() 至于MouseListener - 其他东西可能会捕获鼠标事件并阻止它到达你的JPanel。 要调试它,您需要发布一个最小的,可编译的,可运行的示例程序

另外关于你的MouseListener,你在mouseEntered事件中检查getButton()是没有意义的。 按钮不参与此类事件。 您是否想要检查MouseMotionListener的mouseDragged(...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM