14:47概要JScrollPane内に配置したJPanelを、マウスホイールを使った拡大縮小と、スクロールバーを使った表示領域の移動が可能になるように設定します。上記のサンプルでは、JPanel#getPreferredSize()を拡大後の画像サイズを返すようにオーバーライドすることで、画像がJViewportより大きくなる場合は、スクロールバーが表示されるように設定しています。ズーム自体は、JPanelに表示した画像のズームとスクロールで使用しているものとほぼ同じMouseWheelListenerを設定して実行していますが、画像を描画しているJPanelをJScrollPane内に設定してスクロールバーでのスクロールを可能にしているため、JPanel#paintComponent(...)内でのAffineTransformの使用方法などを変更しています。this);参考リンクJPanelに表示した画像のズームとスクロールマウスホイールによるズーム用のリスナを引用JScrollPaneのViewportをマウスで掴んでスクロールマウスドラッグによるスクロール用のリスナを引用2000ピクセル以上のフリー写真素材集コメント画像上でのマウスドラッグによる移動のあとで、スクロールバーを使用した移動を行うと表示位置がおかしくなるバグがある。17:57:58ズームによるビュー移動には、JViewport#setViewPosition(Point)を使用するように変更し、またマウスドラッグによるスクロールは別のリスナを使用することでバグを回避。