2011-10-06 3 views
0

Java에서 간단한 텍스트 편집기를 만들고 실행 취소 및 다시 실행 기능을 추가하려고합니다. 사용자가 문자를 입력했는지 여부가 아닌 텍스트 영역에서 입력을 중단했는지 여부를 프로그램이 판단 할 수있게하려고합니다. 프로그램은 입력 한 유일한 문자 인 경우에만 한 문자를 저장해야합니다. 이 일에 대해 어떻게 생각하세요?자바 : 사용자가 입력을 중지했는지 확인

+0

좋은 생각입니다. javax.swing API를 알고 있습니까? – adatapost

답변

2

"중지 된 입력"을 정의하십시오.

나는 현명하게도 타이머 사용에 대해 생각해 보겠습니다. 각 캐릭터 이벤트를 가져 와서 카운터와 키 업 이벤트가있을 때마다 다시 시작되는 타이머를 추가하십시오. 충분한 시간이 지나면 "중지 된 타이핑"을 정의하십시오.

정말로이 그런 식으로하고 싶어한다고 생각합니다. 왜냐하면 저에게 절대적으로 횃불을 피우고 갈퀴 같은 개발자의 집을 미치게하는 것처럼 들리니까요.

+1

좋은 제안이고, 이것이 정말로 당신이 무엇인지, 또는 더 중요한 것은 사용자가 원하는지 생각해 보는 것이 좋습니다. 너무 많은 것을 자동화하는 것에 매우 조심하십시오. 단어와 같이 무작위로 텍스트의 서식을 바꾸는 것처럼 보이는 것과 같이 어둡게 만들고 싶지는 않습니다. –

0

메인 클래스 어딘가에 있습니다.

public static long lastKeyPressTime = 0l; 

귀하의 KeyListener 인터페이스에;

public void keyPressed(KeyEvent evt) { 
    lastKeyPressTime = System.currentTimeMillis(); 
} 

마지막으로 적절한 속도로 실행되는 스레드에서;

if((system.currentTimeMillis() - lastKeyPressTime) > 2000) { 
    //do something, because the user hasnt typed for two seconds 
} 
+0

이것은 스레드 안전하지 않습니다. 'lastKeyPressTime'은 여기에'휘발성 '으로 표시되어야합니다. 그래서 EDT로부터 쓰기는 "빠른 실행"스레드에 의해 관찰됩니다. – zmb

관련 문제