シェイプを描画するJPanelがあります。このパネルは、scrollPaneに追加されます。シェイプがシーンから外れるとスクロールは機能しません。簡単に自動スクロールする方法があるのですか、それともプログラムで行う必要があります。シェイプがJPanelの外にあるときの自動スクロール
は、私は(すなわち。あなたがそれに任意のJComponentのを追加していない)を使用すると、カスタム描画のためのキャンバスとしてのJPanelを使用していると仮定しているあなたに
シェイプを描画するJPanelがあります。このパネルは、scrollPaneに追加されます。シェイプがシーンから外れるとスクロールは機能しません。簡単に自動スクロールする方法があるのですか、それともプログラムで行う必要があります。シェイプがJPanelの外にあるときの自動スクロール
は、私は(すなわち。あなたがそれに任意のJComponentのを追加していない)を使用すると、カスタム描画のためのキャンバスとしてのJPanelを使用していると仮定しているあなたに
ありがとうございます。その場合、JScrollPaneはJPanelの大きさを知る方法がなく、スクロールペインのビューポートを正確に埋めるようにサイズを設定します(実際にはスクロールバーは決して使用されません)。
この問題を解決するには、JPanelでgetPreferredSizeをオーバーライドする必要があります。
@Override
public Dimension getPreferredSize() {
int height = calculateHeight();
int width = calculateWidth();
return new Dimension(width, height);
}
編集:カスタム描画をやっているので、
はまた、形状が変更を描きたい時はいつでも再検証を呼び出すようにしてください。これはJPanelのレイアウトやサイズを再考する必要があることをスイングに伝えます。
私は理解していることを確認するために、マウス位置がビューポートから外れているときにcalculateHeight()を計算する必要がありますか? – outellou
あなたがする必要があるのは、描画しているコンポーネントに基づいてパネルの高さを計算するメソッドを書くことだけです。 JScrollPaneはコンポーネントの優先サイズを使用して、スクロールバーを追加する必要があるかどうかを判断します。スクロールバーを使用してナビゲートすることができます。 – gcooney
ありがとうgcooney、ちょうどうまく働いた – outellou