2011-03-07 2 views
1

シェイプを描画するJPanelがあります。このパネルは、scrollPaneに追加されます。シェイプがシーンから外れるとスクロールは機能しません。簡単に自動スクロールする方法があるのですか、それともプログラムで行う必要があります。シェイプがJPanelの外にあるときの自動スクロール

は、私は(すなわち。あなたがそれに任意のJComponentのを追加していない)を使用すると、カスタム描画のためのキャンバスとしてのJPanelを使用していると仮定しているあなたに

答えて

2

ありがとうございます。その場合、JScrollPaneはJPanelの大きさを知る方法がなく、スクロールペインのビューポートを正確に埋めるようにサイズを設定します(実際にはスクロールバーは決して使用されません)。

この問題を解決するには、JPanelでgetPreferredSizeをオーバーライドする必要があります。

@Override  
public Dimension getPreferredSize() { 
    int height = calculateHeight(); 
    int width = calculateWidth(); 
    return new Dimension(width, height); 
} 

編集:カスタム描画をやっているので、

はまた、形状が変更を描きたい時はいつでも再検証を呼び出すようにしてください。これはJPanelのレイアウトやサイズを再考する必要があることをスイングに伝えます。

+0

私は理解していることを確認するために、マウス位置がビューポートから外れているときにcalculateHeight()を計算する必要がありますか? – outellou

+0

あなたがする必要があるのは、描画しているコンポーネントに基づいてパネルの高さを計算するメソッドを書くことだけです。 JScrollPaneはコンポーネントの優先サイズを使用して、スクロールバーを追加する必要があるかどうかを判断します。スクロールバーを使用してナビゲートすることができます。 – gcooney

+0

ありがとうgcooney、ちょうどうまく働いた – outellou

関連する問題