swing jscrollpane 鼠标拖动
时间: 2023-05-21 17:02:33 浏览: 105
可以使用JScrollPane类的setViewportView()方法将需要滚动的组件添加到JScrollPane中,然后使用JScrollPane的setVerticalScrollBarPolicy()和setHorizontalScrollBarPolicy()方法设置滚动条的显示方式。如果需要实现鼠标拖动滚动的功能,可以使用JScrollPane的getViewport()方法获取JViewport对象,然后为JViewport对象添加MouseMotionListener和MouseListener监听器,实现鼠标拖动滚动的功能。以下是示例代码:
JScrollPane scrollPane = new JScrollPane();
JPanel panel = new JPanel();
scrollPane.setViewportView(panel);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
JViewport viewport = scrollPane.getViewport();
viewport.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
JViewport viewport = (JViewport) e.getSource();
Point vp = viewport.getViewPosition();
vp.translate(e.getX() - p.x, e.getY() - p.y);
panel.scrollRectToVisible(new Rectangle(vp, viewport.getSize()));
}
});
viewport.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
p = e.getPoint();
}
});
viewport.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
p = null;
}
});