Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад]

Исходный текст программы MouseMove.java

Оглавление

Назад

// ==========================================
// MouseMove.java
//(C) Alexandr Frolov, 1998
// E-mail: frolov@glasnet.ru
// Web:    http://www.glasnet.ru/~frolov 
// ==========================================
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class MouseMove extends Applet 
  implements MouseMotionListener, MouseListener
{
  Image imFloppy;
  int imHeight;
  int imWidth;
  Rectangle rcImage;
  boolean bBeginDrag = false;
  
  int imX = 0;
  int imY = 0;
  
  int dx = 0;
  int dy = 0;
  
  Dimension dm;
  
  // ============================================
  // init
  // ============================================
  public void init()
  {
    MediaTracker tr = new MediaTracker(this);
    
    imFloppy = getImage(getCodeBase(),
      "disk.gif");
    tr.addImage(imFloppy, 0);
    try
    {
      tr.waitForAll();
    }
    catch (InterruptedException e) {}
    
    imHeight = imFloppy.getHeight(this);
    imWidth = imFloppy.getWidth(this);
    
    rcImage = new Rectangle(imX, imY, 
      imHeight, imWidth);
    
    dm = getSize();
    
    this.addMouseMotionListener(this);
    this.addMouseListener(this);
  }
  
  // ============================================
  // getAppletInfo
  // ============================================
  public String getAppletInfo()
  {
    return "Name: MouseMove";
  }
  
  // ============================================
  // paint
  // ============================================
  public void paint(Graphics g)
  {
    g.drawRect(0, 0, 
      dm.width - 1, dm.height - 1);
      
    g.drawImage(imFloppy, 
      imX + dx, imY + dy, this);
    
    rcImage = new Rectangle(imX + dx, imY + dy, 
      imHeight, imWidth);
  }
  
  // ============================================
  // mouseMoved
  // ============================================
  public void mouseMoved(MouseEvent e)
  {
  }
  
  // ============================================
  // mouseDragged
  // ============================================
  public void mouseDragged(MouseEvent e)
  {
    int newX;
    int newY;
    
    if(bBeginDrag)
    {
      newX = e.getX();
      newY = e.getY();
    
      if(newX < -dx)
        imX = -dx;
	
      else if((newX + imWidth + dx) > dm.width)
        imX = dm.width - imWidth - dx;
	
      else
        imX = newX;
      
      if(newY  < -dy)
        imY = -dy;
	
      else if((newY + imHeight + dy) > dm.height)
	imY = dm.height - imHeight - dy;
	
      else
        imY = newY;
	
      repaint();
    }  
  }
  
  // ============================================
  // mousePressed
  // ============================================
  public void mousePressed(MouseEvent e)
  {
    bBeginDrag = 
      rcImage.contains(e.getX(), e.getY());
      
    if(bBeginDrag)
    {
      dx = imX + dx - e.getX();
      dy = imY + dy - e.getY();
    }  
  }

  // ============================================
  // mouseReleased
  // ============================================
  public void mouseReleased(MouseEvent e)
  {
    bBeginDrag = false;
  }
  
  // ============================================
  // mouseClicked
  // ============================================
  public void mouseClicked(MouseEvent e)
  {
  }
  
  // ============================================
  // mouseEntered
  // ============================================
  public void mouseEntered(MouseEvent e)
  {
  }
  
  // ============================================
  // mouseExited
  // ============================================
  public void mouseExited(MouseEvent e)
  {
  }
}

[Назад]