Java ActionEvent的来源(键盘与鼠标)
我有一个连续的动作,我可以通过按下按钮b1来调用它。目前,我在b1中添加了一个MouseListener,如果鼠标事件的来源恰好是b1,我可以通过在MousePressed中调用StartAction和在MouseRelease中调用StopAction来控制此操作的连续性 现在我希望能够通过键盘触发按钮。人们通常会通过ActionListeners这样做。我可以做到:Java ActionEvent的来源(键盘与鼠标),java,swing,jbutton,actionevent,Java,Swing,Jbutton,Actionevent,我有一个连续的动作,我可以通过按下按钮b1来调用它。目前,我在b1中添加了一个MouseListener,如果鼠标事件的来源恰好是b1,我可以通过在MousePressed中调用StartAction和在MouseRelease中调用StopAction来控制此操作的连续性 现在我希望能够通过键盘触发按钮。人们通常会通过ActionListeners这样做。我可以做到: if (source.equals(b1)) { startAction(); stopAction(); } 唯一
if (source.equals(b1)) {
startAction();
stopAction();
}
唯一的问题是,这种方式鼠标点击会同时触发ActionListener和MouseStener。我想我会尝试将动作侦听器设置为:
if(source.equals(b1) && !(e instanceof MouseEvent))
{
...
}
但这给了我:不可转换类型不能将MouseeEvent强制转换为ActionEvent
所以问题是:有没有办法知道一个动作事件是鼠标点击还是键盘触发?我应该使用其他类型的按钮吗?您可以使用按钮模型的ChangeListener来代替鼠标侦听器。看Mad的答案是的,这听起来正是我想要的。我现在就试试。你想把这个写下来作为答案吗?很有魅力!请随意添加它作为答案。