我有一个非常小的JButton,名为"b",我想在点击它时而不是释放它时执行一些操作。 我使用以下代码:
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
//do some stuff
}
});
但我意识到的是,只要点击一次并释放,它就能做我想要的事情。怎样才能按照我的方式做到这一点呢? 谢谢。
我有一个非常小的JButton,名为"b",我想在点击它时而不是释放它时执行一些操作。 我使用以下代码:
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
//do some stuff
}
});
但我意识到的是,只要点击一次并释放,它就能做我想要的事情。怎样才能按照我的方式做到这一点呢? 谢谢。
点击指的是按下并松开一个按钮。当单击按钮且在鼠标释放时,只有该按钮仍处于武装状态(鼠标位于按钮范围内)时才会触发单击事件。要处理按下事件,请使用低级别的MouseListener
。
btn.addMouseListener(new MouseListener() {
@Override
public void mousePressed(MouseEvent e) {
//do some stuff
}
/*Override other methods*/
});
或者更好的方法是使用MouseAdapter
btn.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
//do some stuff
}
/*No need to override other methods, `MouseAdapter` already does it*/
});
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();
}
});