我有這個簡單的單身用於鍵盤輪詢,它實現keyListener只是爲了改變布爾的狀態。我通過get getListener()獲取keyListener對象。我不確定這是否可行,但代碼是有效的。可能有更好的方法來完成這個?枚舉單例實現keyListener
更新:更簡單的方法使用的bitset
package Singleton;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.BitSet;
public enum bitKeyProcessor implements KeyListener{
INSTANCE;
private final BitSet bitset = new BitSet();
@Override
public void keyPressed(KeyEvent e) {
bitset.set(e.getKeyCode());
}
@Override
public void keyReleased(KeyEvent e) {
try{bitset.clear(e.getKeyCode());}
catch(Exception ex) {ex.printStackTrace();}
}
public void keyTyped(KeyEvent e) {};
public boolean isUp(){
if(bitset.get(KeyEvent.VK_UP))
return true;
return false;
}
....
public boolean isUpRight(){
if(isUp() && isRight())
return true;
return false;
}
那麼代碼看起來對我來說還不錯,Joshua Bloch肯定會喜歡使用枚舉來創建一個Singleton。 –
爲什麼???!帶有實例字段的普通舊類有什麼問題? (另外,我不認爲在關鍵代碼上有任何指定的有限範圍。IIRC,Solaris上的數字鍵盤輸入鍵用於給出相當高的值。 –