2

その中にJScrollPane m_jScrollPaneJLabel m_jlImage表示されています。これm_jlImageは、ユーザーが画面上で最後にクリックした場所に赤い点が描かれたスクリーン キャプチャです。m_jScrollPaneの赤い点の上にあるの表示領域を移動 (スクロールを読む) したいのですがm_jlImagelastClickはユーザーが最後にクリックした場所で、 と同じ座標にありm_jlImageます。

これは私が思っていたよりも難しいことが証明されています。

同じ軸に沿って画面全体の長さに対するクリック ポイントの値の比率を取得し、対応するスクロール バーをその最大値と同じ比率でスクロールすることにしました。これは、画面上で最後にクリックしたポイントが左上隅にある場合にのみ機能するようです。

クリックしたポイントが画面の端にある場合の対処方法がわかりません。このシナリオでは比率が生成され、スクロール バーが同じ比率でスクロールされますが、赤い点は画面の端にあるためスクロールされて見えなくなります。どうすればこれを克服できるかについての提案はありますか?

    public void scrollViewToLastClick()
    {
        int clckH = lastClick.y;
        int clckW = lastClick.x;

        int picH = this.m_jlImage.getHeight();
        int picW = this.m_jlImage.getWidth();

        int ratW = (int)(m_jScrollPane.getWidth()*(double)clckW/(double)picW);
        int ratH = (int)(m_jScrollPane.getHeight()*(double)clckH/(double)picH);

        m_jScrollPane.getHorizontalScrollBar().setValue(ratW);
        m_jScrollPane.getVerticalScrollBar().setValue(ratH);
    }
4

1 に答える 1