KeyboardPianoV1.5.3 鼠標事件


詳細步驟

例行說明

  • 首先貼一張貼 全鍵按下圖 (可見於 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
    1. mousePressed() & mouseReleased() 用處很明顯,不贅述
    2. 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);
	}
	
}

相關鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章