標準の Java 2D を使用して独自のスクロールバーを作成するにはどうすればよいでしょうか。
私は本当にswingを使いたくありません.ボタンなどの他のすべてのコンポーネントパーツはすでに独自に作成しています.
私は実際にはコードを探しているのではなく、イベントの変更と描画に関連する数学を探しています。
なぜ独自の Java GUI ツールキットを作成する必要があるのでしょうか。あなたはすでに Swing と SWT の選択肢を持っていますが、本当にこの 2 つのチームよりもうまくやれるでしょうか?
ツールキットの残りの部分を既に作成しているのであれば、なぜスクロールバーに困惑するのか理解できません。イベント システムやカスタム コンポーネントの構造について何も知らなければ、多くのアドバイスを与えることはできません。これが特に数学集約的であるとは思いません-スクロール可能なコンポーネントの高さとそれが含まれるビューを維持するだけで、スクロールバーのサイズは表示されるコンポーネントの比率と一致する必要があります。スクロールバーの位置は、コンポーネントのどの部分が表示されるかに一致する必要があります (これはスケーリングする必要があります)。具体的には、何を知りたいですか?
Javaがオープンになりました。Swing や SWT は既に実装されているので、ソースを調べてみます。数学はかなり簡単に見えます。バーとコンテナがあります。簡単にするために、長さ (スクロールバーが移動する寸法) についてのみ説明します。コンテナは一定の長さです。バーの長さはコンテナと同じかそれ以下です。スクロールバーの中心と 2 つの端点を定義すると便利です。スクロールバーは、上が 0、下が 1、または上が 0、下が 100 から開始できます。重要な部分は、同じ方法でスクロールバーを定義することです。次に、エッジとの衝突のエンドポイントをチェックして、バーの動きを止めることができます。バー内の座標にカーソルを合わせてマウスを押し続けると、バーはカーソルがどこにあるかを気にし始め、スクロールバーと、スクロールバーが最終的に影響を与えると思われるものをペイントします。したがって、影響を受けるページを取得し、それを 0 と 1 * スクロールバーのピクセル単位のスケールにマップします。次に、両端の矢印、各クリックのジャンプの大きさ、マウスダウンイベントの処理などについて心配するようになります。与えられたものを使用して、車輪を再発明しないでください。
Java2Dではありませんが、この単純なコードスニペットが役立つ場合があります。