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