ユーザーが画像を表示し、マウスを使用して画像をパンできるJavaアプリを作成しています。画像のパンを実装するには、JViewports を使用してmouseClicked
とイベントを組み合わせて使用します。mouseDragged
コードの大部分は mouseDragged メソッドにあります
public void mouseDragged(MouseEvent e, WindowWrapper w) {
final JViewport vp = someFieldViewPort;
//Getting the point that the mouse is dragged to to
Point cp = e.getPoint();
final Point vPoint = vp.getViewPosition();
//I found the image went off the content to show the white border so I included this
// Here pp is a field that I sent when the mouse is clicked in a separate method
if(vPoint.getX()+pp.x-cp.x>=0 & vPoint.getY()+pp.y-cp.y>=0)
vPoint.translate(pp.x-cp.x, pp.y-cp.y);
else if(vPoint.getX()+pp.x-cp.x>=0 & vPoint.getY()+pp.y-cp.y<0)
vPoint.translate(pp.x-cp.x, (int) -vPoint.getY());
else if(vPoint.getX()+pp.x-cp.x<0 & vPoint.getY()+pp.y-cp.y>=0)
vPoint.translate((int) -vPoint.getX(), pp.y-cp.y);
//finally set the position of the viewport
vp.setViewPosition(vPoint);
vp.repaint();
}
これは機能しますが、これらすべてを行うためのより簡単な方法があるに違いないと感じています。すべてではないにしても、ビューポートが画像から周囲の境界線に出ないようにするコードを置き換えることはできますか?