我想在Java中创建一个join.me。
我已经制作了屏幕截图,但现在我想通过拖动鼠标滚动图像。
这是我制作的屏幕:
首先,我想通过鼠标拖动图像来替换滚动条。可能吗? 然后我想删除那些滚动条。
今天,用户可以更改缩放并使用鼠标滚轮进行放大/缩小。
你能帮帮我吗?
感谢。
编辑:我找到了隐藏滚动条的方法:
this.jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
this.jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
答案 0 :(得分: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();
}
}
然后在你的框架中放置:
HandScrollListener scrollListener = new HandScrollListener(label_to_move);
jScrollPane.getViewport().addMouseMotionListener(scrollListener);
jScrollPane.getViewport().addMouseListener(scrollListener);
它应该有用!