10

Javaのようなjoin.meを作りたいです。

画面キャプチャ部分を作成しましたが、マウスをドラッグして画像をスクロールしたいです。

これが私が作ったものの画面です: ここに画像の説明を入力

まず、画像をマウスでドラッグしてスクロールバーを置き換えたいと思います。出来ますか?次に、それらのスクロール バーを削除します。

現在、ユーザーはズームを変更したり、マウス ホイールを使用してズームイン/ズームアウトしたりできます。

私たちを手伝ってくれますか?

ありがとう。


編集:スクロールバーを非表示にする方法を見つけました:

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

1 に答える 1

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

それはうまくいくはずです!

于 2012-04-20T11:49:14.973 に答える