Gast29- quellcode; quadrat verschieben

Status
Nicht offen für weitere Antworten.
G

Gast29

Gast
Hi, wie kann ich jetzt hier einfügen, dass das verschobene Quadrat gezeichnet bleibt und man auch per mouseclick es vergrößern kann.
MfG und thx

Gast29 ^^

Code:
import java.applet.*; import java.awt.*; import java.awt.event.*;
public class Malen2 extends Applet implements MouseMotionListener{
  Graphics stift;
  int lastx,lasty;
  public void init(){
    addMouseMotionListener(this);
    stift=getGraphics();

  }
  /*public void paint(MouseEvent e){
    int x1,y1;
    x1=e.getX();y1=e.getX();
    stift.drawRect(x1,y1,50,50);
  }*/


  public void mouseDragged(MouseEvent e){
    int x,y;

    x=e.getX(); y=e.getY();
    repaint();
    stift.setColor(Color.black);
    stift.drawRect(x,y,50,50);

    stift.drawRect(x,y,50,50);
  }
  public void mouseMoved(MouseEvent e){

  }
}
 
B

Beni

Gast
1. Darf man ein "Graphics"-Objekt nicht behalten, die Dinger können plötzlich veraltet sein und nicht mehr funktionieren.
2. Um zu garantieren, dass das Richtige gezeichnet wird, muss man die "paint"-Methode überschreiben. Diese Methode wird immer aufgerufen, wenn das Applet gezeichnet werden soll (entweder kommt so ein Aufruf wegen repaint, oder weil z.B. der Browser minimiert war).
3. Um das Flackern weg zu bekommen, würde ich von "JPanel" erben, und eine Instanz von "Malen2" auf ein "JApplet" legen. Alternativ kann man mit Bildern arbeiten, da gibt es aber viele Beispiele im Netz (Stichwort "Doublebuffering").

Hier, damit du mal was zu sehen hast:
Code:
import java.applet.*;
import java.awt.*; 
import java.awt.event.*;

public class Malen2 extends Applet implements MouseMotionListener{
  int lastx,lasty;
  
  public void init(){
    addMouseMotionListener(this);
  }
 
  public void paint( Graphics g ) {
      g.setColor( Color.BLACK );
      g.fillRect( 0, 0, getWidth(), getHeight() );
      g.setColor( Color.RED );
      g.fillRect( lastx, lasty, 50, 50 );
  }

  public void mouseDragged(MouseEvent e){
    lastx = e.getX();
    lasty = e.getY();
    repaint();
  }
  public void mouseMoved(MouseEvent e){

  }
}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben