首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JButton出版社(非发行版)

JButton出版社(非发行版)
EN

Stack Overflow用户
提问于 2013-06-06 18:19:47
回答 2查看 5.6K关注 0票数 3

我有一个非常小的JButton叫做"b",我想在点击的时候做一些事情,而不是在发布它的时候。我使用以下代码:

代码语言:javascript
复制
b.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e){
            //do some stuff
        }
    });

但我意识到,只要先按下鼠标,然后松开鼠标,它就能完成我想要做的事情。怎么才能按我的方式做呢?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-06 18:29:40

单击表示按钮已被按下并释放。单击按钮时,仅当释放鼠标时按钮仍处于武装状态(鼠标位于按钮范围内)时,才会触发单击事件。要处理按下事件,请使用低级MouseListener

代码语言:javascript
复制
btn.addMouseListener(new MouseListener() {

    @Override
    public void mousePressed(MouseEvent e) {
        //do some stuff
    }

    /*Override other methods*/

});

或者更好地使用MouseAdapter

代码语言:javascript
复制
btn.addMouseListener(new MouseAdapter() {

        @Override
        public void mousePressed(MouseEvent e) {
            //do some stuff
        }

        /*No need to override other methods, `MouseAdapter` already does it*/

    });
票数 3
EN

Stack Overflow用户

发布于 2014-09-20 20:02:53

上面的答案只对鼠标事件做出反应,但当按钮具有输入焦点时,可以使用空格键切换按钮按下状态。要获得完整的实现,请使用MouseListener和KeyListener。

代码语言:javascript
复制
b.addMouseListener(new MouseListener() {

    public void mouseClicked(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    public void mousePressed(MouseEvent e) {
        doOnPressedAction();
    }
    public void mouseReleased(MouseEvent e) {
        doOnReleasedAction();
    }
});
b.addKeyListener(new KeyListener(){
    public void keyTyped(KeyEvent e) {}

    public void keyPressed(KeyEvent e) {
        if (sendButton.getModel().isPressed()) {
            doOnPressedAction();
        } else {
            // just in case it can happen that the button is released on
            // a key press action (maybe another controls key listener...)
            doOnReleasedAction();
        }
    }

    public void keyReleased(KeyEvent e) {
        doOnReleasedAction();
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16959560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档