Hallo zusammen,
zurzeit bin ich gerade am Java lernen. Leider komme ich beim Zeichnen nicht mehr weiter. Ich habe versucht ein Programm zu schreiben, um das Zeichnen und das Thema über MouseListener zu üben. Beim Drücken der linken Maustaste lächelt das Gesicht, bei der rechten sieht es grimmig aus. Bei einem Doppelklick bekommt das Smiley zusätlich eine Brille aufgestzt. Ausserdem habe ich in diesem Programm versucht, das Double-Buffering zu implementieren, um dieses zu üben.
zurzeit bin ich gerade am Java lernen. Leider komme ich beim Zeichnen nicht mehr weiter. Ich habe versucht ein Programm zu schreiben, um das Zeichnen und das Thema über MouseListener zu üben. Beim Drücken der linken Maustaste lächelt das Gesicht, bei der rechten sieht es grimmig aus. Bei einem Doppelklick bekommt das Smiley zusätlich eine Brille aufgestzt. Ausserdem habe ich in diesem Programm versucht, das Double-Buffering zu implementieren, um dieses zu üben.
Code:
package Event_Animation;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class Mouse_Test extends Frame {
Image im = null;
Graphics g = null;
static Mouse_Test wnd = null;
public static void main(String[] args) {
wnd = new Mouse_Test();
wnd.setSize(300, 200);
//Mittelpunkt des Bildschirms bestimmen
int width = (int) wnd.getToolkit().getScreenSize().getWidth() / 2;
int height = (int) wnd.getToolkit().getScreenSize().getHeight() / 2;
wnd.setLocation(width, height);
wnd.setVisible(true);
}
Mouse_Test() {
super("Mausklicks");
addWindowListener(new WindowClosingAdapter());
addMouseListener(new MyMouseListener());
}
public class MyMouseListener extends MouseAdapter {
int cnt = 0;
@Override
public void mousePressed(MouseEvent event) {
//Duouble-Buffer initalisieren
if (im == null || g == null) {
//Das Fensterobjekt beschafft sich durch Aufruf von createImage ein //Offscreen-Image und
//speichert es in einer Instanzvariable "im"
im = wnd.createImage(300, 200);
//Durch Aufruf von getGraphics wird ein Grafikkontext zu diesem Image beschafft.
g = im.getGraphics();
}
int x = event.getX();
int y = event.getY();
// Alle Bildschirmausgaben gehen zunächst auf den Offscreen-Grafikkontext
if (event.getClickCount() == 1) {// Gesicht
++cnt;
// Kopf und Augen
g.drawOval(x - 10, y - 10, 20, 20);
g.fillRect(x - 6, y - 5, 4, 5);
g.fillRect(x + 3, y - 5, 4, 5);
// Mund
if (event.isMetaDown()) {// grimmig
g.drawLine(x - 5, y + 7, x + 5, y + 7);
}else{
g.drawArc(x-7, y-7, 14, 14, 225, 100);
}
//zähler
g.drawString(" "+cnt,x+10,y-10);
}else if(event.getClickCount()==2){//Brille
g.drawLine(x-9, y-3, x+9, y-3);
}
//Wenn alle Ausgabeoperationen abgeschlossen sind, wird das Offscreen-Image mit
//drawImage in das Ausgabefenster kopiert.
g.drawImage(im, 0, 0, wnd);
}
}
}