我这里的代码使用 MouseAdapter 来监听用户在他们想要放大的图像区域周围“绘制”一个框,并计算该框与图像的比率。然后,它将图像大小调整为计算出的比率。这部分有效。
我遇到的问题是使 JScrollPane 视图看起来好像在调整图像大小后它仍然位于相同的左上角位置。我尝试了几种方法,似乎已经接近我想要的结果,但并不完全准确。
这是查找比例并设置位置的监听器:
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.Graphics;
import java.awt.Point;
import javax.swing.JScrollPane;
import javax.swing.JViewport;
import javax.swing.JComponent;
public class DynamicZoom extends MouseAdapter {
private Point start;
private Point end;
private double zoom = 1.0;
private JScrollPane pane;
private JViewport port;
public void mousePressed(MouseEvent e) {
if(e.getButton() == MouseEvent.BUTTON1) {
this.pane = (JScrollPane)e.getSource();
this.port = pane.getViewport();
start = e.getPoint();
}
}
public void mouseReleased(MouseEvent e) {
if(this.pane != null) {
Point curr = this.port.getViewPosition();
end = e.getPoint(); …Run Code Online (Sandbox Code Playgroud)