2014-04-27 5 views
1

글쎄, 저는 프로그램을 만들고 있어요. 3 초 동안 'f'키를 누른 후에 뭔가해야합니다. 3 초 동안 누르지 않았다면, 안됩니다. 내가 키를 누를 및 발표되고 있는지 알고하는 방법을 알고, 아무것도 할하지만 난 누르고있는 시간을 알 수있는 방법을 찾을 수없는자바에서 키가 눌려지는 시간은 얼마입니까

private void formKeyPressed(java.awt.event.KeyEvent evt) {         
    // to know if a key is being pressed 

} 
private void formKeyReleased(java.awt.event.KeyEvent evt) {         
    // to know when a key is released 

} 

편집 : 그 대답에 대한 Nevermid, 그것은 didn를 일하지 마라. 그것이 내가이 일을했다 작동하도록 : 키가 해제 될 경우에만 불구하고, 액션을 트리거합니다

private long keyPressedMillis; 
private boolean alreadyPassed==false; 
... 
private void formKeyPressed(KeyEvent event) { 
if(alreadyPassed==false) 
keyPressedMillis = System.currentTimeMillis() 
alreadyPassed=true; 
} 
private void forKeyReleased(KeyEvent event) { 
long keyPressLength = System.currentTimeMillis() - keyPressedMillis; 
    alreadyPassed=false; 
    System.out.println("Key Pressed "+keyPressLenght+" ms"); 

} 

답변

0
long whenTheKeyWasPressed; 

private void formKeyPressed(java.awt.event.KeyEvent evt) {         
    whenTheKeyWasPressed = System.currentTimeMillis(); 
} 

private void formKeyReleased(java.awt.event.KeyEvent evt) {         
    long now = System.currentTimeMillis(); 

    if ((now - whenTheKeyWasPressed) >= 3000L) { 
     ... 
    } 
} 

합니다. 시간이 3 초가되었을 때 액션을 트리거하려면 keyPressed() 메소드에서 스윙 타이머를 시작하고 keyReleased() 메소드에서 스윙 타이머를 중지하십시오.

+0

괜찮 덕분에, 나는 3 초 키를 누른 후 "SS"와 같은 메시지를 보여주기를 원했다, 그것은 작동하지 않았다 클래스 타이머 – HkGDota

+0

을 확인하지만 그것은 아무것도 우리가있어 – HkGDota

+0

를 보이지 않았다 여분의 luci 마법사가 아닙니다. 따라서 코드를 보지 않고 코드가 작동하지 않는 이유를 설명 할 수 없습니다. 질문을 수정하고 코드를 게시하십시오. –

0

키를 눌렀을 때를 추적하고 놓을 때 계산할 필요가 있습니다.

long keyPressedMillis; 

private void onKeyPressed(KeyEvent event) { 
    keyPressedMillis = System.currentTimeMillis() 
} 

private void onKeyReleased(KeyEvent event) { 
    long keyPressLength = System.currentTimeMillis() - keyPressedMillis; 
    if (keyPressLength >= 3000) { 
     //do whatever you need 
    } 
} 
+0

System.currentTimeMillis()가 무엇을하는지 이해하지 못했습니다. 설명 할 수 있습니까? – HkGDota

+0

작동하지 않았다. System.out.println ("SS"); 그런 다음 4 초 동안 키를 눌렀지만 아무것도 인쇄하지 않았습니다. – HkGDota

관련 문제