2012-01-31 11 views
4

大きなパネル(非常に大きな幅、非常に小さい高さ、つまり水平なパネル)をコントロールする水平スクロールバーがあります。スクロールコンテンツの途中でjavaスクロールバーを開始する

スクロールバーの開始が必要です(ノブが最大左にある場合)。スクロールしているパネルの開始点ではなく、指定した特定の場所で開始します。スクロールバーの終わり(ノブが最大右のとき)と同じです。

スクロールバーは常にスクロールしているパネルにバインドされていますが、その動作を変更する方法はわかりません。

EDIT:例として

、画像通常のウェブページ:ページの上部に、スクロールバーのノブが上にもある場合。下部にあるときは、スクロールバーのつまみが下部にあります。スクロールバーのノブが上部または下部に達すると、実際の上部および下部の代わりに、私が定義した制限がページに表示されるように、コンテンツの新しい制限を定義します。

答えて

3

JScrollbarメソッドsetValues()を使用してこの問題を解決しました。と同時にをスクロールバーの最大値、最小値、および範囲に設定できます。最大値と最小値を私が望む値に設定することによって、スクロールバーは私が望む/期待したように動作します。

問題は、私は最大値と最小値(setMaximumsetMinimum)を設定したことで、モデル最小< =値< =値+エクステント< =最大、そのestrategyで厳密ポリシーが存在するので動作しませんでした。

2

大きなパネルをバッキングストアとして保持し、スクロールペインで実際に実現されるパネルに関心領域をコピーすることは可能でしょうか。この方法では、スクロールペインの動作に対抗する必要はありません。

+0

通常の動作と戦う代わりに、実際にコンテンツをトリミングすることができます。しかし、これは大きなプラットフォームの小さな部分であり、コンテンツをトリミングするには多くの(計画外の)変更が必要です。他の解決策が見つからない場合は、私の最後の手段です。 – Anoyz

+0

+1は明確な質問を予期していたためです。 – trashgod

3

How to Use Scroll Panesに示すように、コンポーネントのscrollRectToVisible()メソッドを使用して任意のRectangleにスクロールできます。例はhereです。

補足:Containerとして、JPanelはかなりのネストされたコンテンツを持っていてもかなり差し支えありません。特定のレベルでコンテンツをスワップする信頼できる方法の1つは、CardLayouthere,およびhere)です。

+0

これはまさに私が尋ねたものではありません。私は特定のコンテンツにスクロールしたくありません。私は非常に大きなコンテンツを持っており、私はスクロールバーにそのコンテンツのほんの一部を考慮させたい。つまり、スクロールバーの境界を定義して、スクロールバーのつまみがほとんど左(または右)の場合は、表示されたコンテンツがコンテンツの特定の部分になるようにします。 – Anoyz

+0

ああ、今はIaDの答えが理にかなっている。私は何も気づいていない。一般的に、ビューではなくデータモデルでこれを解決する方が簡単になります。コンテンツはカプセル化されていますか? 'TableModel'? – trashgod

+0

内容はかなり複雑です:いくつかのJPanels、テキストを含むもの、多くのコンポーネントを持つものです。したがって、単一のデータモデルはありません。 laDが述べたように、可能な答えは、viewPortに表示されるべき部分だけを表示するようにコンテンツをトリミングすることです。しかし、コンテンツは非常に複雑なので、多くの(計画外の)変更が行われます。私はまだすべてのコンテンツを持つことができるいくつかのソリューションを探していたが、スクロールのためだけにその一部を考慮する。 – Anoyz

関連する問題