以前にドラッグ スクロールを実装したことがありますが、無限スクロール ペインを作成する最良の方法は何ですか? もちろん、スクロールバーはなく、ドラッグ スクロールを実装します。
私がやろうとしているのは、無限の表面に動的負荷を実装することです。
編集
もちろん、実際には無限ではありません。偽装する方法を尋ねています。
以前にドラッグ スクロールを実装したことがありますが、無限スクロール ペインを作成する最良の方法は何ですか? もちろん、スクロールバーはなく、ドラッグ スクロールを実装します。
私がやろうとしているのは、無限の表面に動的負荷を実装することです。
編集
もちろん、実際には無限ではありません。偽装する方法を尋ねています。
JScrollPane.getViewport()
を取得しJViewport
て追加するために使用できますChangeListener
。サイズ、またはさらに重要な位置が変更されたJViewport
ときに、リスナーに警告します。位置がの端の近くで変更された場合はJScrollPane
、ビューポートのサイズを変更できます(サイズによってトリガーされる変更イベントを無視する必要があります)。
次のことができます。
AdjustmentClass adj = new AdjustmentClass();
scrollPane.getHorizontalScrollBar().addAdjustmentListener(adj);
scrollPane.getVerticalScrollBar().addAdjustmentListener(adj);
そして、AdjustmentClass で次の操作を行います。
public class AdjustmentClass implements AdjustmentListener {
public void adjustmentValueChanged(AdjustmentEvent adjustmentEvent) {
// Implement your custom code here
}
}
イベントの向きを取得するには、次のようにします。
adjustmentEvent.getAdjustable().getOrientation();
方向定数は次の場所にあります。
AdjustmentEvent.UNIT_INCREMENT
AdjustmentEvent.BLOCK_INCREMENT
などなど
ユーザーがスクロールバーのノブをドラッグしているかどうかを確認するには、次のようにします。
adjustmentEvent.getValueIsAdjusting()
他にもいくつかあります。必要に応じて、API で詳細情報を確認してください。
ハッピーコーディング!
少し遅れて、私が関連する質問に与えた答えをここに投稿します:
あなたができることは、GIMPが移動するにつれて拡張できるスクロール領域を持っている方法を使用することです-ビューポートを移動する最初の意図をマークするためにマウスの中ボタンのクリックをキャッチします。次に、マウスをドラッグしたときに(ボタンがクリックされている間)、jscrollpaneのビューポートを最初のクリックと現在の位置の間のオフセットだけ移動します。キャンバスの境界の外に移動した場合は、単にキャンバスを拡大する必要があります。
キャンバスは、スクロールペイン内に表示されるコンポーネントです。ビューポートを移動するときは、次のことを行う必要があることに注意してください。