Java - 通过鼠标拖动滚动图像

Man*_*oba 10 java swing mouseevent jscrollpane drag

我想在Java中创建一个join.me.

我已经制作了屏幕截图部分,但现在我想通过拖动鼠标滚动图像.

这是我制作的屏幕: 在此输入图像描述

首先,我想通过鼠标拖动图像来替换滚动条.可能吗?然后我想删除那些滚动条.

今天,用户可以更改缩放并使用鼠标滚轮进行放大/缩小.

你可以帮帮我吗?

谢谢.


编辑:我找到了隐藏滚动条的方法:

this.jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
this.jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
Run Code Online (Sandbox Code Playgroud)

Man*_*oba 22

最后,我自己做了.如果有人需要,这是解决方案:

创建一个HandScrollListener使用以下代码命名的新类:

import java.awt.Cursor;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JLabel;
import javax.swing.JViewport;

public class HandScrollListener extends MouseAdapter
{
    private final Cursor defCursor = Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR);
    private final Cursor hndCursor = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);
    private final Point pp = new Point();
    private JLabel image;

    public HandScrollListener(JLabel image)
    {
        this.image = image;
    }

    public void mouseDragged(final MouseEvent e)
    {
        JViewport vport = (JViewport)e.getSource();
        Point cp = e.getPoint();
        Point vp = vport.getViewPosition();
        vp.translate(pp.x-cp.x, pp.y-cp.y);
        image.scrollRectToVisible(new Rectangle(vp, vport.getSize()));
        pp.setLocation(cp);
    }

    public void mousePressed(MouseEvent e)
    {
        image.setCursor(hndCursor);
        pp.setLocation(e.getPoint());
    }

    public void mouseReleased(MouseEvent e)
    {
        image.setCursor(defCursor);
        image.repaint();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在你的框架中放:

HandScrollListener scrollListener = new HandScrollListener(label_to_move);
jScrollPane.getViewport().addMouseMotionListener(scrollListener);
jScrollPane.getViewport().addMouseListener(scrollListener);
Run Code Online (Sandbox Code Playgroud)

它应该工作!