ビューポート


位置の管理

スクロールのようなコントロールの移動処理はビューポートで行います
ビューポートは、内部で管理する情報に対する窓の役割をします
スクロール処理を学習するには、まずこれを学習する必要があります
これは javax.swing.JViewport クラスで実現します
java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JViewport

public class JViewport
	extends JComponent implements Accessible
このクラスは、デフォルトコンストラクタのみを公開しています
ビューポートが管理するビューは JViewport.setView() で設定します
また JViewport.getView() メソッドでビューを取得することもできます

public void setView(Component view)
public Component getView()

view には、新しく設定するビューを指定します
デフォルトでは null が設定されており、null を指定することもできます

ビューポートが表示するビューの原点を変更することで、ビューの位置を制御できます
これは JViewport.setViewPosition() メソッドで位置を設定し
JViewport.getViewPosition() を使って取得することができます

public void setViewPosition(Point p)
public Point getViewPosition()

p には新しいビューの原点を指定します
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Test extends JApplet implements MouseMotionListener , MouseListener {
	Point temp;
	JViewport view = new JViewport();;

	public void init() {
		JLabel label = new JLabel(new ImageIcon("test.jpg"));
		view.setView(label);
		view.addMouseListener(this);
		view.addMouseMotionListener(this);

		getContentPane().add(view);
	}

	public void mouseClicked(MouseEvent e) {}
	public void mouseEntered(MouseEvent e) {}
	public void mouseExited(MouseEvent e) {}
	public void mousePressed(MouseEvent e) { temp = e.getPoint(); }
	public void mouseReleased(MouseEvent e) {}

	public void mouseDragged(MouseEvent e) {
		Point offset = new Point(
			e.getPoint().x - temp.x , e.getPoint().y - temp.y
		) ;
		temp = e.getPoint();

		view.setViewPosition(
			new Point(
				view.getViewPosition().x - offset.x ,
				view.getViewPosition().y - offset.y)
			);
	}
	public void mouseMoved(MouseEvent e) {}
}


このプログラムは、ビューポートのアイコンを表示するラベルを追加しています
マウスがドラッグされると、これに従って原点を移動させています
そのため、マウスによってラベルを移動させることができるのです



前のページへ戻る次のページへ