2012-01-04 24 views
1

JScrollPaneがあります。コンテンツペインにはJPanelがあります。そのためにJPanel私は小さいJPanel秒を追加し、予想通り、私があまりにも多くを追加する場合JPanel、垂直スクロールバーが表示されます。JScrollPaneのJScrollPane

問題は、私の小さなJPanelにはJEditorPaneJScrollPaneも含まれています。私はマウスホイールを使用したいですは外側のスクロールペインで、小さいスクロールペインでは使用しません。小さなスクロール区画の場合、既にwheelScrollingEnabled()falseに設定していますが、いずれかの方向にスクロールしてマウスがJEditorPaneを超えると、スクロールはもう機能しません。

アドバイスはありますか?

+0

+1興味深いキャッチのために:私の期待は、wheelScrollEnabledをfalseに設定すると、トリックを行うだろう:-) – kleopatra

答えて

6

ホイールイベントを内側のスクロールペインからその親に転送しようとすることがあります。

innerScrollPane.addMouseWheelListener(new MouseWheelListener() { 

    @Override 
    public void mouseWheelMoved(MouseWheelEvent e) { 
     innerScrollPane.getParent().dispatchEvent(e); 
    } 
}); 
+0

ありがとうございました! :) – Rothens

+0

良い汚れ対策:-) wheelScrollEnabled == falseの祖先にwheelEventをディスパッチする動作に戻らない動作は、BasicScrollPaneUI、IMOのバグです。内部的にインストールされたwheelListenerを適切に追加/削除する必要があります – kleopatra

1

あなたJScrollPaneMouseWheelListenerを追加し、イベントを処理する際に、そのdispatchEvent(AWTEvent)メソッドを呼び出すことで、メインJScrollPaneにそれを渡します。

+0

ありがとうございます、私はそれを試してみましょう。 :) – Rothens

+0

不要ですが、不必要にハードコーディングの依存関係はありません。特にeditorPaneは問題とは関係ありません。 – kleopatra

+0

同意すると、リスナーはJScrollPaneに登録する必要があります。 – Vlad