2012-04-20 4 views
10

자바에서 join.me를 만들고 싶습니다.Java - 마우스 끌기로 이미지 스크롤

화면 캡처 부분을 만들었지 만 마우스를 드래그하여 이미지를 스크롤하고 싶습니다. 여기

내가 만든 한 내용의 화면입니다 : 모든 enter image description here

첫째, 이미지를 드래그 마우스로 스크롤 막대를 교체합니다. 가능한가? 그런 다음 스크롤 막대를 제거하고 싶습니다.

오늘 사용자는 줌을 변경하고 마우스 휠을 사용하여 확대/축소 할 수 있습니다.

도와 주시겠습니까?

감사합니다.


편집 : 내가 사용하는 스크롤 막대를 숨길 수있는 방법을 발견했습니다

this.jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
this.jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); 

답변

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); 

그것은 작동합니다을!

+0

내가 할 수 있으면 한 번 이상 회상하겠다. 공유 해줘서 고마워 !! –