詳細步驟
例行說明
- 首先貼一張貼 全鍵按下圖 (可見於 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);
}
}