2

インターネットで自分の質問に関連するものを見つけることができませんでした。

JPanelを追加するJScrollPaneがあり、JPanelにJLabelが入力されます。

現在、ユーザーはJScrollPaneの一番下までスクロールし、[次へ]ボタンをクリックします。

私がやりたいのは、ユーザーがJScrollPaneの下部にいるとき、またはその近くにいるときを検出することです。これにより、ユーザーからの入力なしで「次へ」の動作をトリガーできます。

これも可能ですか?

みなさん、よろしくお願いします。

4

3 に答える 3

4

JScrollBarはBoundedRangeModelを使用し、これはChangeListenerを受け入れます。これにより、スクロールバーへの変更をリッスンし、それに応じて応答できます。

于 2012-09-30T17:05:32.317 に答える
4

の垂直スクロールバーに登録されているAdjustmentListenerを使用JScrollPaneして、イベント値に基づいてアクションを実行できます。

これがです。

于 2012-09-30T17:07:57.353 に答える
0

スクロールペインが下部(高さの90%)に近いときにイベントをトリガーする方法を示す例を次に示します。

final JScrollPane scrollPane = new JScrollPane(panel);
scrollPane.getViewport().addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent event) {
        JScrollBar scrollbar = scrollPane.getVerticalScrollBar();
        if (scrollbar.getValue() + scrollbar.getVisibleAmount() > scrollbar.getMaximum() * 0.9) {
            // trigger the 'Next' behaviour here
        }
    }
});

または、リスナーをモデルに追加することもできます。

final BoundedRangeModel model = scrollPane.getVerticalScrollBar().getModel();
model.addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent event) {
        if (model.getValue() + model.getExtent() > model.getMaximum() * 0.9) {
            // trigger the 'Next' behaviour here
        }
    }
});
于 2019-06-28T22:47:29.427 に答える