私はちょうどJPanelの上addKeyListener()
を使用して(KeyEvent ke)
をkeyPressedコールバックメソッドの一つで、私は図面のものキーボードポーリングの用途は何ですか?
`public void keyPressed(KeyEvent ke)
{
keyName=KeyEvent.getKeyText(ke.getKeyCode());
/*calling other classes ,calculating values
and drawing on the jpanel (moving an image ,etc)
*/
ke.consume();
}`
を行い、キーボード入力を受け付ける.FORのJava 1.6を使用して、2Dグラフィックアプリケーションを作るしかし、そこにいますまず初期化し、このような何かを行く私はいくつかのブログで見つかった別のアプローチ、
1)があるboolean[] keys=new boolean[256];
2)各キーイベントを受信したため、その後、ちょうどこのブール配列に値を格納します。
`public void keyPressed(KeyEvent ke)
{
//storing the keyevent:true since its due to key being pressed
keyMap[ke.getKeyCode()]=true;
ke.consume();
}`
`public void keyReleased(KeyEvent ke)
{
//storing the keyevent:false since its due to key being released
keyMap[ke.getKeyCode()]=false;
ke.consume();
}`
最後に[]ブール値をループし、キーの状態をチェックする方法..
`for(int i=0;i<keyMap.length;i++)
{
if(keyMap[i]==true)
{
/* do some graphic tasks...*/
}
}`
いただきました二つのパターンの違いはありますか?
2番目の方法では、古き良き時代にポーリングが行われたように見えるコードが生成されますが、ポーリングのようには見えません。それはまだポーリングではなく配列を変更するコールバックです...そして、あなたはJavaでそれについて選択することはできません(少なくとも100%Javaコードではありません)。ネイティブにしたい場合は、キーボードがUSBポートに接続されている間、実際にポーリングすることができます(PS/2ならIRQ /コールバックは私が覚えている限りです)。 – NoozNooz42