JavaExempelScribble i Java
[ Hem ] Allmänt ASP XML SQL ADO HTML CSS VB Java Design Karta
Grunderna Exempel

Scribble i Java

* Scribble i Java
* Vidareutveckling
* MyStroke klassen
* Några frågor

Scribble som Java Applet

    Tema:
  • Mushantering
  • Graphics klassen
  • Point klassen
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

/*
En Applet för Webanvändning
Sätt in den i en websida med följande html kod
    <applet
        code=ScribbleApplet.class
        name=ScribbleApplet
        width=320
        height=200>
    </applet>
*/

/* 
----------------------------------------------------------
class ScribbleApplet
----------------------------------------------------------
OBS!
eftersom klassen heter ScribbleApplet måste filen heta 
ScribbleApplet.java
*/
public class ScribbleApplet extends Applet
{
    // initieraren körs alltid på en Applet
    public void init()
    {   
        // sätt en BorderLayout på appleten
        this.setLayout(new BorderLayout());
        // och sätt in ritpanelen i mitten
        this.add( "Center", new MyDrawing() );
    }
}

/* 
----------------------------------------------------------
class MyDrawing 
----------------------------------------------------------
En Panel variant med ritegenskaper...
*/
class MyDrawing extends Panel implements 
                            MouseMotionListener, // för mouseDragged 
                            MouseListener        // för mouseReleased 
                                                 // och mouseClicked
{
    // senaste muskoordinater
    // en Point klass är lättaste sättet att hålla reda på både x och y
    private Point lastPoint = new Point( );
    
    // ritar vi ??
    private boolean isDrawing = false;

    // konstruereren körs alltid då ett objekt av denna klass skapas
    public MyDrawing()
    {
        // se till att vi reagerar på mushändelser
        this.addMouseListener( this );
        this.addMouseMotionListener( this );
        // sätt en vit bakgrund
        this.setBackground( Color.white );
    }

    // alla dessa måste finnas om vi inte vill köra anonyma 
    // funktioner, de behöver dock inte göra någonting
    public void mouseMoved(MouseEvent e) {  }
    public void mousePressed(MouseEvent e) { }
    public void mouseEntered(MouseEvent e) { }
    public void mouseExited(MouseEvent e) { }

    //----------------------------------------------------------
    // vi klickade på panelen
    //----------------------------------------------------------
    public void mouseClicked(MouseEvent e) 
    { 
        // var det ett dubbelklick?
        if (e.getClickCount() > 1)
        {
            // rita i så fall om panelen
            this.repaint();
        }
    }

    //----------------------------------------------------------
    // i VB måste vi hantera musklick och musförflyttning separat
    // i Java kombineras dessa i mouseDragged händelsen som sker när
    // man flyttar musen med en knapp nedtryckt
    //----------------------------------------------------------
    public void mouseDragged(MouseEvent e) 
    {
        // håller vi på och ritar?
        if (isDrawing)
        {
            // kolla alla eventuella modifierare, 
			// t.ex. vilken musknapp vi använt
            int modifier = e.getModifiers();
            // kontrollerar om det var knapp 1 som blivit tryckt
            if ( (modifier & MouseEvent.BUTTON1_MASK ) == modifier )
            {
                // sätt en blå förgrundsfärg
                this.setForeground( Color.blue );
            }
            else 
            {
                // sätt en röd förgrundsfärg
                this.setForeground( Color.red );        
            }
            // kontrollera shift tangenten
            if ( e.isShiftDown() )
            {
                // sätt en svart förgrundsfärg
                this.setForeground( Color.black );
            }
            // drag ett streck mellan föregående 
			// koordinater och nuvarande
            this.getGraphics().drawLine(lastPoint.x , 
                                        lastPoint.y , 
                                        e.getPoint().x , 
                                        e.getPoint().y
                                        );
        }
        // sätt undan muskoordinaterna i en point
        lastPoint = e.getPoint();
        // vi har nu börjat rita...
        // nästa gång denna händelse sker skan vi dra streck
        isDrawing = true;
    }
    //----------------------------------------------------------
    // Vi släppte den netryckta musknappen
    //----------------------------------------------------------
    public void mouseReleased(MouseEvent e) 
    {
        // om vi släppt musen så skall vi sluta rita
        isDrawing = false;
    }
}

Resultatet

Klicka här för att provköra Appleten

  Scribble i VBVidareutveckling
Exempel
Färgblandare
EuroKalkylator
Editor
Animerade bilder ...
Scribble i VB
Scribble i Java ...


Top
< Scribble i VB Vidareutveckling>
© Anders Enges, Vörå 2002  | 26.03.01 09:57 Visa asp koden