我有一个非常小的JButton叫做"b",我想在点击的时候做一些事情,而不是在发布它的时候。我使用以下代码:
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
//do some stuff
}
});但我意识到,只要先按下鼠标,然后松开鼠标,它就能完成我想要做的事情。怎么才能按我的方式做呢?谢谢
发布于 2013-06-06 18:29:40
单击表示按钮已被按下并释放。单击按钮时,仅当释放鼠标时按钮仍处于武装状态(鼠标位于按钮范围内)时,才会触发单击事件。要处理按下的事件,请使用低级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*/
});发布于 2014-09-20 20:02:53
上面的答案只对鼠标事件做出反应,但当按钮具有输入焦点时,可以使用空格键切换按钮按下状态。要获得完整的实现,请使用MouseListener和KeyListener。
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();
}
});https://stackoverflow.com/questions/16959560
复制相似问题