# Applet mit Mouse Event



## TripleH (14. Jan 2004)

Hallo!

Ich versuche grad ein kleines Applet zu Programmieren wo man in einem Fenster mit der Maus irgendwo hinklickt und dann soll dort ein Kreuz gezeichnet werden. Die Mitte des Kreuzes ist dort wo man hingeklickt hat.
Die Größe des Kreuzes soll dann 10 einheiten bzw. Pixel in jede Richtung sein.

Ich habe folgendes schon gemacht.

Zuerst hab ich eine Klasse Punkt definiert.


/*
 * Punkt.java
 *
 * Created on 1. Januar 2003, 11:57
 */

package grafik;

/**
 *
 * @author  basti
 */
public class Punkt {
    private int x;
    private int y;
    Punkt ( int z1, int z2 )
    { x= z1; y= z2;};
    public int getx () {return  x;};
    public int gety () { return y;};


    /** Creates a new instance of Punkt */
    public Punkt() {
    }

}


So hier werden auf jeden Fall die Punktkoordienaten schon mal gespeichert.

Doch wie müßt ich weiter machen?
Könnt ich jetzt schon das Applet machen oder sollt ich noch eine Klasse Strecke machen in der das Kreuz errechente wird.

Ich hoffe es kann mir jemand weiterhelfen bei der Übung...

Danke im vorraus.

Gruß

Bast


----------



## TripleH (14. Jan 2004)

Hi.
Ich nochmal oder ist es garnicht nötig ne Klasse Punkt zu ertellen?

Da ich ja eigentlich nur dort wo ich geklickt hab ein Kreuz haben möcht . Aber es gibt keine vordefinierte Methoden
für ein Kreuz deshalb muss ich wohl noch Klassen selber definieren oder?

Ich hoff mir kann jemand bei diesm eigentliich leichten Beispiel helfen??

Gruß Bast


----------



## el_barto (14. Jan 2004)

für diesen kleinen funktionsumfang, den das applet haben soll, ist es eigentlich nicht nötig, mehrere klassen zu schreiben. du kannst in deinem applet alle benötigten funktionen implementieren.


----------



## TripleH (14. Jan 2004)

Hallo!

Ich hab mal ne Kleinigkeit versucht. Leider hats alles nicht geklappt Den Teil vom Code der meiner Meinung wohl nicht ganz richtig war hab ich rausgenommen der Übersichtlichkeit wegen.


```
/*
 * KH2.java
 *
 * Created on 14. Januar 2004, 12:49
 */

package test;

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

/**
 *
 * @author  Basti
 */

public class Kreuz extends Applet {
    private int x, y;


    public void init() {
        this.addMouseListener(new MouseAdapter(){            // hier wird der Klick mit der Maus erfasst
            public void mousePressed(MouseEvent e) {
                x = e.getX();                                                 //Koordinaten des Klicks
                y = e.getY();
			};
			});

 public void paint (Graphics g) {}
```




Ich denk mal das es bis zur Public void init richtig ist aber dann muss ich ja noch das kreuz zeichen
in der void paint Methode.

Kann mir jemand weiterhelfen wie das aussehen möcht da ich irgendwie den Code nicht richtig hinbekomm und ein Buch nach dem anderen wälz aber am besten übt es sich halt an Beispielen deswegen würde mir das sehr helfen.

Schönen Dank

Gruß

Basti


----------



## TripleH (15. Jan 2004)

Hallo meine Aufgebae ist immer noch das Kreuz zu zeichnen dort wo man die Maus hinklickt.

Folgendes hab ich bis jetzt.



```
public class Punkt { 
private int x; 
private int y; 
Punkt ( int z1, int z2 ) 
{ x= z1; y= z2;}; 
public int getx () {return x;}; 
public int gety () { return y;}; 


/** Creates a new instance of Punkt */ 
public Punkt() { 
} 

}
```


und dazu folgendes Applet:


```
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Kreuz extends java.applet.Applet {
    private int x, y;

    /** Initialization method that will be called after the applet is loaded
     *  into the browser.
     */
        public void init() {
       
        this.addMouseListener(new MouseAdapter(){
            public void mousePressed(MouseEvent e) {
                x = e.getX();
                y = e.getY();
          
               };   // public void mousePressed
            });  // MouseListener
        }
        public void paint (Graphics g) {
            Punkt ph;
           
            g.drawLine(ph.getx()+10, ph.gety(), ph.getx()-10, ph.gety());
              g.drawLine(ph.getx(), ph.gety() + 10, ph.getx(), ph.gety() -10);
         
        }
        
}
```

Allerdings kommt immer der Fehler das ph nicht initalisiert ist.
Ist mein Code sonst sytaktisch richtig ode sieht jemdn Verbesserungen?

Gruß Basti


----------



## TripleH (15. Jan 2004)

Hi,
hab den Qeilltext nochmal angepasst.Doch leider gehts immer noch nicht...
liegt das daran das ich zeichnen global definiert hab?


```
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Kreuz extends java.applet.Applet {
private int x, y;
boolean zeichnen = false;
/** Initialization method that will be called after the applet is loaded
* into the browser.
*/
public void init() {

this.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e) {
if (!zeichnen){zeichnen = true;}
x = e.getX();
y = e.getY();


}; // public void mousePressed
}); // MouseListener
}
public void paint (Graphics g) {

if (zeichnen){ g.drawLine(x-10,y-10,x+10,y+10); }

}

}
```

Irgendwie steh ich heut aufm Schlauch..
Gruß 

Basti


----------



## deusful (7. Feb 2004)

hallo,

ich habe zur zeit ein ähnliches problem, ich möchte genau an dem punkt, an dem ich geklickt habe ein punkt darstellen. gibt es dafür eine möglichkeit oder hast du selber eventuell eine möglichkeit gefunden?
ich habe auch schon an repaint() gedacht und dann den punkt einfachen darstellen zu lassen, funzt aber nicht!

für eine hilfe wäre ich sehr dankbar!


----------

