저는 JScrollPane 내부, JSPlitPane 내부, JPanel 내부, 큰 JPanel (큰 BufferedImage 표시)로 간단한 GUI를 만들었습니다. JFrame 내부.JscrollPane은 Matlab 내의 JSPlitPane에 추가 할 때 mousewheelevent를 수신하지 않습니다.
Eclipse IDE에서 JFrame을 직접 실행/표시 할 때 JScrollPane은 마우스 휠을 스크롤 할 때 마우스 휠 이벤트를 올바르게 수신하고 스크롤합니다.
그러나 Matlab (JAR 빌드)에서 실행하면 마우스 휠을 스크롤 할 때 JScrollPane이 스크롤되지 않습니다.
나는 다음과 같이/디 버브 일부 syso 수동 MouseWheelListener를 추가하여 문제를 이해하려고 노력했습니다
이클립스 IDE에서 직접 실행하는 경우가 표시되는jscrollpane.addMouseWheelListener(new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
System.err.println("jscrollpane mouse wheel event");
}
});
jsplitpane.addMouseWheelListener(new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
System.err.println("jsplitpane mouse wheel event");
}
});
"JScrollPane의 마우스 휠 이벤트를"(이것이 승인). 그러나 Matlab에서 GUI를 실행할 때 "jsplitpane 마우스 휠 이벤트"가 표시됩니다.
I했습니다 또한 내 JScrollPane의가 MouseWheelListener를 가지고 있는지 확인하기 위해이 코드 조각을 추가
for (MouseWheelListener listener : jscrollpane.getMouseWheelListeners()) {
System.err.println("ONE LISTENER FOR JSCROLLPANE");
}
을 그리고 그것은 내장 MouseWheelListener를 두 번 (내 syso 리스너에 한 번, 한 시간이 표시되는 jscrollpane 구성 요소의).
그래서 JScrollPane 구성 요소는 Matlab에서 어떻게됩니까? JscrollPane이 MouseWheel 이벤트를 수신하도록하려면 어떻게해야합니까?
Matlab이 일반적인 awt 마스크 이벤트를 업데이트하여 mousewheel 이벤트를 잡는 jscrollpane을 방지 할 수 있다고 생각하십니까?
흠 뭔가() MouseWheelListener를에서 마우스 이벤트가, 헤비급 MATLAB에없는 경우 테스트 할 수있다 (해본 적이 MATLAB하지 의도 시도하거나 사용하는) 하나의 간단한있을 수 섭취해야, 다음 AWT 기반을 소비하는(), 당신은 매우 간단한 테스트를 부모 (matlab)에 MouseWheelListener를 추가 할 수 있습니다. JScrollPane을 통해 발생하는 이벤트를 소비하는 경우 경량 (J) 구성 요소와 무거운 믹싱의 희생자입니다. – mKorbel
마우스 이벤트가 주어 졌다고 읽었습니다 상위 구성 요소로 이동하여 부모에게 제공합니다. 여기에는 마우스 휠 이벤트를 잡는 jsplitpane이 있습니다. 이것은 jscrollpane의 부모입니다. 그래서 ... JScrollpane이 이벤트를 가져 오기 전에 이벤트가 소비되지 않습니다. 그것은 jscroolpane이 "disable"이고 이벤트를받지 못했고, 이벤트가 부모 (jsplitpane)에 직접 주어져있는 것과 같습니다. – Alexxx
전혀 모르겠다. matlab을 사용하지 않고 모든 것이 작동하는지 여부를 알려주시겠습니까? – mKorbel