2

以前にドラッグ スクロールを実装したことがありますが、無限スクロール ペインを作成する最良の方法は何ですか? もちろん、スクロールバーはなく、ドラッグ スクロールを実装します。

私がやろうとしているのは、無限の表面に動的負荷を実装することです。

編集

もちろん、実際には無限ではありません。偽装する方法を尋ねています。

4

3 に答える 3

1

JScrollPane.getViewport()を取得しJViewportて追加するために使用できますChangeListener。サイズ、またはさらに重要な位置が変更されたJViewportときに、リスナーに警告します。位置がの端の近くで変更された場合はJScrollPane、ビューポートのサイズを変更できます(サイズによってトリガーされる変更イベントを無視する必要があります)。

于 2009-07-29T00:50:44.577 に答える
1

次のことができます。

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 で詳細情報を確認してください。

ハッピーコーディング!

于 2011-05-19T12:22:04.013 に答える
0

少し遅れて、私が関連する質問に与えた答えをここに投稿します:

あなたができることは、GIMPが移動するにつれて拡張できるスクロール領域を持っている方法を使用することです-ビューポートを移動する最初の意図をマークするためにマウスの中ボタンのクリックをキャッチします。次に、マウスをドラッグしたときに(ボタンがクリックされている間)、jscrollpaneのビューポートを最初のクリックと現在の位置の間のオフセットだけ移動します。キャンバスの境界の外に移動した場合は、単にキャンバスを拡大する必要があります。

キャンバスは、スクロールペイン内に表示されるコンポーネントです。ビューポートを移動するときは、次のことを行う必要があることに注意してください。

  • 以前のビューポートと現在のビューポートが表示用の最小領域内にある場合(つまり、ウィジェットがフラットでスクロールペインにない場合にウィジェットによって取得される実際の領域)、何もしません。
  • 現在の領域が「最小領域」内にない場合は、内部ウィジェットのサイズを、目的のビューポートと元のウィジェットの両方を含む長方形のサイズに変更します(元のウィジェットを左上隅が(0)の長方形として扱います。 、0))。ウィジェットのスクロール位置を変更する必要があることに注意してください。
于 2011-10-21T00:42:34.120 に答える