2012-04-20 116 views
10

Tôi muốn tạo một join.me giống như trong Java.Java - Di chuyển hình ảnh bằng cách kéo chuột

Tôi đã tạo phần chụp màn hình nhưng giờ tôi muốn cuộn trong hình bằng cách kéo chuột.

Dưới đây là một màn hình của những gì tôi đã thực hiện: enter image description here

Trước hết, tôi muốn thay thế các thanh cuộn của chuột kéo hình ảnh. Có thể không? Sau đó, tôi muốn xóa các thanh cuộn đó.

Hôm nay, người dùng có thể thay đổi thu phóng và sử dụng bánh xe chuột để phóng to/thu nhỏ.

Bạn có thể giúp tôi không?

Cảm ơn.


Edit: Tôi đã tìm thấy cách nào để ẩn thanh cuộn sử dụng:

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

Trả lời

22

Cuối cùng, tôi đã làm điều đó bản thân mình. Dưới đây là giải pháp nếu ai đó cần nó:

Tạo một lớp mới có tên HandScrollListener với đoạn mã sau:

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

Sau đó, trong khung đặt của bạn:

HandScrollListener scrollListener = new HandScrollListener(label_to_move); 
jScrollPane.getViewport().addMouseMotionListener(scrollListener); 
jScrollPane.getViewport().addMouseListener(scrollListener); 

Nó sẽ làm việc!

+0

Tôi sẽ upvote bạn nhiều hơn một lần nếu tôi có thể. Cám ơn vì đã chia sẻ!! –

Các vấn đề liên quan