2014-10-09 5 views
0

그래서, 우리는 다음과 같은 응용 프로그램의 구조를 가지고 다음 EC_GUI 생성자 JOGL, com.jogamp.newt.event.KeyListener 문제

enter image description here

내가 GLViewer에

private void initGlViewer() { 
     /** 
     * Viewer. 
     */ 
     glViewer = new GLViewer(); 
     glViewer.setup(); 
     centerPanel.add(glViewer.getNewtCanvasAWT()); 
    } 

초기화 glViewer는 GLEventListener를 구현하며 다음과 같습니다.

public GLViewer() { 

     GLProfile gLProfile = GLProfile.getDefault(); 

     GLCapabilities gLCapabilities = new GLCapabilities(gLProfile); 

     glWindow = GLWindow.create(gLCapabilities); 
     /* 
     * We combine NEWT GLWindow inside existing AWT application (the main JFrame) 
     * by encapsulating the glWindow inside a NewtCanvasAWT canvas. 
     */ 
     newtCanvasAWT = new NewtCanvasAWT(glWindow); 
    } 

in the glViewer.setup() mouse, key 및 glEvent 리스너를 glWindow에 추가합니다.

com.jogamp.newt.event의 키 및 마우스 이벤트를 사용하고 있습니다. 뿐만 아니라

@Override 
    public synchronized void keyPressed(KeyEvent ke) { 
     System.out.println("keyPressed " + ke.getKeyCode()); 

과의 keyReleased : 내 모든 KeyListener에서

내의 keyPressed 이벤트가 시작됩니다.

때때로 트리거링과 관련하여 불일치가 발생합니다. 예를 들어, Ctrl + o 키 조합을 눌러 fileChooser를 열어 보겠습니다. 그것이 있어야로

은 다음과 같습니다

여기
keyPressed 17 
List of pressed inputs 
ctrl 
keyPressed 79 
List of pressed inputs 
ctrl 
o 
keyReleased 17 
keyReleased 79 
2014.10.09, 10:53:49 [INFORMATION] Open a project ... 
2014.10.09, 10:53:49 [INFORMATION] Opening file chooser for load. 
2014.10.09, 10:53:55 [INFORMATION] User clicked 'cancel' in file chooser dialog. 

당신은, 그들은 모두 해제되고 fileChooser가 표시됩니다 다음 (17) O를, 내가 Ctrl 키 (17)를 누르면 볼 수 있습니다. 그리고 마지막 줄에서 볼 수 있듯이 끝납니다.

keyPressed 17 
List of pressed inputs 
ctrl 
keyPressed 79 
List of pressed inputs 
ctrl 
o 
keyReleased 17 
2014.10.09, 10:57:34 [INFORMATION] Open a project ... 
2014.10.09, 10:57:34 [INFORMATION] Opening file chooser for load. 
2014.10.09, 10:57:35 [INFORMATION] User clicked 'cancel' in file chooser dialog. 
keyPressed 17 
List of pressed inputs 
ctrl 
keyReleased 79 
2014.10.09, 10:57:36 [INFORMATION] Open a project ... 
2014.10.09, 10:57:36 [INFORMATION] Opening file chooser for load. 
2014.10.09, 10:57:38 [INFORMATION] User clicked 'cancel' in file chooser dialog. 

나는 Ctrl 키와 O의 keyPressed 얻을,하지만 난의 keyReleased,이 경우 O 중 하나 놓칠 수 :

그러나 때때로 이것은 내가 무엇을 얻을 수 있습니다. 어쨌든 fileChooser는 여전히 열립니다. 다음 시도에서 Ctrl + O를 다시 누르지 만 이번에는 okeyPressed가 누락됩니다. 나는 또한 Ctrl 키를 놓친다. 어쨌든 fileChooser는 여전히 열립니다. 그러나 때때로 예를 들어, 개방 나던 :

keyPressed 17 
List of pressed inputs 
ctrl 
keyPressed 79 
List of pressed inputs 
ctrl 
o 
keyReleased 17 
2014.10.09, 11:08:57 [INFORMATION] Open a project ... 
2014.10.09, 11:08:57 [INFORMATION] Opening file chooser for load. 
2014.10.09, 11:08:58 [INFORMATION] User clicked 'cancel' in file chooser dialog. 
keyPressed 17 
List of pressed inputs 
ctrl 
keyReleased 79 
2014.10.09, 11:08:59 [INFORMATION] Open a project ... 
2014.10.09, 11:08:59 [INFORMATION] Opening file chooser for load. 
2014.10.09, 11:09:02 [INFORMATION] User clicked 'cancel' in file chooser dialog. 
keyReleased 79 
keyReleased 17 
keyReleased 79 

나는 Ctrl 키의 keyPressed, O-의 keyPressed, CTRL-의 keyReleased, 아니 오-의 keyReleased를 얻을 fileChooser가 열리면, 그때 닫습니다. 나는 그들을 다시 눌렀다. 나는 Ctrl-keyPressed, o-keyPressed, o-keyReleased, ctrl-keyReleased, fileChooser를 연 다음 다시 닫는다. 나는 Ctrl + O를 다시 눌러, 나는 어떤 keyPressed도 얻지 못했고, 나는 단지 o-keyReleased를 얻었고, ctrl-keyReleased 그리고 다른 o-keyReleased를 얻었습니다. FileChooser가 이번에 열리지 않습니다 ..

단서가 있습니까? http://forum.jogamp.org/keyReleased-keyPressed- :

+0

질문은 이미 여기에 질문 KeyEvent.isXDown()에 의해 각각의 X 수정을 quering으로 누르면 수정 매의 keyPressed /의 keyReleased 이벤트에서 확인하여 해결 problem-td4033288.html 단위 테스트를 제공하고 버그 보고서를 작성하십시오. – gouessej

+0

@ gouessej already done – elect

+0

https://jogamp.org/bugzilla/show_bug.cgi?id=1092 – gouessej

답변