2

したがって、次のようなJScrollBarのコンストラクターがあります。

public JScrollBar(int orientation, int value, int extent, int min, int max) 

JScrollBarの実装では、データのサイズがintの制限を超える可能性があるため、int値を長くする必要があります。たとえば、次のようになります。

public JScrollBar(int orientation, long value, long extent, long min, long max) 

JScrollBarのこのコンストラクターを実装するための最良の方法は何ですか?これらの値はどこにでもあるので、JScrollBarを完全に再作成することでしょうか?または、これを行うためのより良い方法が他にありますか?

注: JscrollBarを完全に書き直す場合は、swing.DefaultBoundedRangeModelも上書きする必要があります。これもintを使用するためです。これは最善のアプローチではないようですので、誰かより良いアイデアがありますか?

4

2 に答える 2

3

あるレベルでは、実際の変更を適切に検出するために、画面の解像度が不足します。コンテンツをスクロールすると、スクロールバーは移動しません。または、ユーザーはスクロールバーを移動して新しい領域にテレポートし、方向感覚を失います。

32ビット整数の実行は20億の正の数です。画面の解像度が1,000ピクセルでも、スクロールバーでのピクセルの動きは、スクロールしているものの宛先で2,147,483ピクセルを表すため、ユーザーはスクロールバーを制御できません(ズームが1:1の場合)。ですから、ズームレベルをスクロールバーにマッピングして、どのレベルでもスクロールでき、スムーズになるようにする方法を考えたと思います。

他のオプションとしては、概要/詳細コントロールを使用して、大きな画像のどこにいるかを示す正方形の小さな画像を表示してから、拡大表示することができます。上の画像の画像をドラッグして、詳細画像で結果を確認できます。そこにある問題は、それを1ピクセルだけ移動した場合でも、この200万ピクセルの動きがあるため、小さなズームスケールで大きな画像の周りを移動するのはかなり混乱することです。ただし、方向感覚を失わない小さな動きには、詳細ビューで手をドラッグすることを使用します。その側面は、JScrollBarの再実装の問題を回避し、おそらくより良いオプションになるでしょう。

于 2011-10-27T19:13:18.133 に答える
1

私はおそらく、それに応じて値をサブクラス化JScrollBarし、オーバーライドsetValueして調整(スケーリング)しようとします。

于 2011-10-27T18:21:46.880 に答える