JScrollPane 内、JSPlitPane 内、JPanel 内、.... JFrame 内に大きな JPanel (大きな BufferedImage を表示する) を使用して、Swing で単純な GUI を作成しました。
JFrame を Eclipse IDE から直接実行/表示すると、JScrollPane はマウス ホイール イベントを正しく受け取り、マウス ホイールをスクロールするとスクロールします。
しかし、Matlab (私は JAR を作成しました) から実行すると、マウス ホイールをスクロールしても JScrollPane はスクロールしません。
次のように、syso を使用して手動で mousewheellistener を追加して、問題をデバブ/理解することを試みました。
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");
}
});
Eclipse IDE から直接実行すると、「jscrollpane マウス ホイール イベント」が表示されます (これで問題ありません)。しかし、Matlab から GUI を実行すると、「jsplitpane マウス ホイール イベント」が表示されます。
また、jscrollpane に mousewheellistener があることを確認するために、次のコードを追加しました。
for (MouseWheelListener listener : jscrollpane.getMouseWheelListeners()) {
System.err.println("ONE LISTENER FOR JSCROLLPANE");
}
そして、それは 2 回表示されます (1 回は私の syso リスナー用で、もう 1 回は jscrollpane コンポーネントの組み込みの mousewheellistener 用です)。
では、Matlab では JScrollPane コンポーネントはどうなるでしょうか? JscrollPane に MouseWheel イベントを強制的に受け取るにはどうすればよいですか?
私はMatlabが一般的なawtマスクイベントを更新して、jscrollpaneがマウスホイールイベントをキャッチするのを防ぐと思いますか?