スクリーンショットの撮影を扱う小さなJavaアプリケーションを構築しています。画像を保持するScreenshotPanelと呼ばれるJPanelから継承するカスタムクラスがあり、それはJScrollPane内にあります。フレームのサイズが変更されると、ScrollPaneが移動してサイズが変更されます。ズーム部分を除いてすべてうまく機能します。ScrollPane内のscreenshotPanelのサイズを制御できるようにしたいのですが、screenshotPanelはサイズ変更されず、適切なサイズで一瞬ちらつきますが、その後ScrollPaneにサイズ変更されます。サイズ。
ScrollPaneなしでscreenshotPanelを使用すると、正確に機能しますが、ズームイン中に画像を移動できるように、自動的にスクローラーを追加する必要があります。
サイズ変更に使用するコードの一部は次のとおりです。
double AR=((double)screenshotPanel.getImage().getHeight())/screenshotPanel.getImage().getWidth();
screenshotPanel.setSize((int)((getWidth()-180)*zoomFactor), (int)((AR*(getWidth()-180)-100)*zoomFactor));
scrollPane.setSize(getWidth()-180, (int)(AR*(getWidth()-180))-100);
-180と-100は、ボタンとズームコントロールコンポーネント(すべてが完全に移動およびサイズ変更されます)用のスペースを維持するために使用されます。zoomFactorは、ズームする量を保持するdoubleです。
ScrollPaneがサイズを強制的に戻さずに、ScrollPane内のscreenshotPanelのサイズを変更するにはどうすればよいですか?