详细步骤
例行说明
- 首先贴一张贴 全键按下图 (可见于 KeyboardPianoV0.0 项目介绍)
- 即使一个人把所有按键一次性全部按下,也未必能达到这种效果,因为即使是那种全键无冲的键盘,也可能有翻车 ←_←
- 那博主是怎么做到的呢?其实问题的关键就是一开始选用的开关按钮
JToggleButton
,使用鼠标点击一次,按钮就不会弹起来,所以才能做到全键按下的效果 - 所以这个版本加入鼠标事件监听处理该 BUG
再此强调,
V1.5.2
合并到V1.5.1
中, 而不是直接跳到V1.5.3
具体步骤
- 造个
MouseMonitor extends MouseAdapter
=>@Override mousePressed() & mouseReleased() & mouseExited()
, 详见代码分析 - 初始化
MyButton
时候,加入鼠标事件监听this.addMouseListener(new MouseMonitor(this));
代码分析
MouseMonitor
mousePressed() & mouseReleased()
用处很明显,不赘述mouseExited()
鼠标移开,按钮设置抬起
private class MouseMonitor extends MouseAdapter {
JToggleButton button = null;
MouseMonitor(JToggleButton button) {
this.button = button;
}
@Override
public void mousePressed(MouseEvent e) {
button.setSelected(true);
}
@Override
public void mouseReleased(MouseEvent e) {
button.setSelected(false);
}
@Override
public void mouseExited(MouseEvent e) {
button.setSelected(false);
}
}