0

私は内部に独自のカスタムコントロールを持っていますJScrollPane。これは、グリッドが付いた無限の(すべての方向の)ボードです。

私はそれを実装するために、による拡張と追加、およびJViewportによる拡張と追加など、さまざまなアプローチを試しました。setViewportJComponentsetViewportView

すべてのアプローチは、無限とネガティブな場所でいくつかの問題を引き起こします。コンポーネントは負の座標空間で自由に描画できますが、Swing APIの設計が不適切な場合、この情報をコンテナに転送できません(寸法のみ、つまり正の方向が許可されます)。

JScrollPane最後に、スクロールバーの最小値と最大値を更新する包含サイズを通知するチャネルを完全に切断すると、手動で最小値と最大値を設定できるようになり、タスクが解決するという結論に達しました。

だから、これは質問です:カスタムコンポーネントがJScrollPaneそのサイズについて通知するのを防ぐ方法は?そのような防止の簡単な方法は何ですか?

4

1 に答える 1

1

むしろ、論理 (モデル) 座標とコンポーネント座標/サイズを分離したいと思います。したがって、ユーザーが NORTH 方向に増加する場合、コンポーネントの高さに適切な変更値を追加し、レンダリング (またはコンポーネント) の垂直位置を下にシフトする必要があります。

Rectangle例として、(0,0) に配置されたモデル要素があります。長方形をペイントする JPanel の初期ペイント ポイントは (10,10) です。実際、ペイントするときはg.translate(10,10)、モデルをペイントしてからペイントしますg.draw(myRectangle);

したがって、ユーザーが NORTH (+10) を増やすと、シフトg.translate(10,10+10)を増やし、JPanel's適切な高さを増やして、サイズの変更を反映しますJScrollPane

于 2013-02-22T06:18:38.180 に答える