# Einfaches Paint-Programm



## Cheera (23. Jan 2007)

Hi, ich fange seit kurzem mit der Java Programmierung an und würde gern ein einfaches Paint programm schreiben  . Den groben Aufbau habe ich mir im Internet zusammengesucht und würde gerne die Farbe aussuchen können mit Hilfe von Buttons. Nun habe ich einen MouseMotionListener und bräuchte einen ActionListener um den Button lebendig zu machen  . ich weiß nicht weiter, bitte um Hilfe. 

Greetz DennBast 

Für andere Vorschläge zum programmieren bin ich offen 

PS: Quellcode 


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

public class Zeichnen extends Applet 
implements MouseMotionListener, ActionListener { 





int width, height; 
Image backbuffer; 
Graphics backg; 
Button RedButton; 

public void init() { 
width = getSize().width; 
height = getSize().height; 
RedButton = new Button("Ich Will Rot!"); 
add(RedButton); 
RedButton.addActionListener(this); 


backbuffer = createImage( width, height ); 
backg = backbuffer.getGraphics(); 
backg.setColor( Color.black ); 
backg.fillRect( 0, 0, width, height ); 
backg.setColor( Color.white ); 

addMouseMotionListener( this ); 
} 

public void mouseMoved( MouseEvent e ) { } 
public void mouseDragged( MouseEvent e ) { 
int x = e.getX(); 
int y = e.getY(); 
backg.fillOval(x-5,y-5,10,10); 
repaint(); 
e.consume(); 
} 

public void update( Graphics g ) { 
g.drawImage( backbuffer, 0, 0, this ); 
} 

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


----------



## Leroy42 (23. Jan 2007)

Und wo ist den ActionListener?

Die Methode


```
public void actionPerformed(ActionEvent e) {
  // Hier deine Aktionen
}
```

fehlt.


----------



## Cheera (23. Jan 2007)

Vielen Dank, der Button is jetzt da und das Programm funktioniert. Nur wie ändere ich die Farbe des Striches wenn ich auf den Button Klicke?

Danke im Voraus


----------



## Leroy42 (23. Jan 2007)

Welchen _Strich_?


----------



## Cheera (23. Jan 2007)

Den Strich den man im Applet zeichnen kann. Damit man Freihand mit verschiedenen Farben zeichnen kann.


----------



## Marco13 (23. Jan 2007)

Tricky, direkt in den Backbuffer zu zeichnen. Ich bezweifle, dass das so OK ist, kann aber auch nicht direkt sagen, warum ich das bezweifle  ???:L 

Du würdest dann in der actionPerformed-Methode eine aktuelle Farbe speichern

```
public class Zeichnen ... 
{
    private Color currentColor = Color.BLACK;
 
    public void actionPerformed(ActionEvent e)
    {
        if (e.getActionCommand().equals("Ich will Rot"))
        {
            currentColor = Color.red;
        }
    }
}
```

und bevor du ein Objekt in ein Graphics-Objekt zeichnest, diese Farbe setzen


```
void ichWillWasMalen()
       {
            meinGraphicsObjekt.setColor(currentColor);
            meinGraphicsObjekt.draw....
       }
```


----------



## Beni (23. Jan 2007)

Unmarkiertes Crossposting :bloed:


----------



## Cheera (24. Jan 2007)

Sorry für das Crossposting, kommt nicht wieder vor!

Mit dem Programm gibts immernoch Probleme, der Button hat immernoch keine Lust mir meine Farbe fürs Zeichnen zu ändern  :cry:  bin zu schlecht  *verzweifel*

bis jetzt siehts so aus:

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

public class Zeichnen extends Applet
   implements MouseMotionListener, ActionListener   {

   int width, height;
   Image backbuffer;
   Graphics Zeichnung;
   Button RedButton;

   private Color currentColor = Color.black;
    
   public void init() {
   
      width = getSize().width;
      height = getSize().height;

      addMouseMotionListener( this );
       
      RedButton = new Button("Ich Will Rot!");
      add(RedButton);
      RedButton.addActionListener(this);

      backbuffer = createImage( width, height );
      Zeichnung = backbuffer.getGraphics();

   }

  public void actionPerformed(ActionEvent e) {

      if (e.getActionCommand().equals(RedButton))
        {
          currentColor = Color.red;

        }
  }

   public void mouseMoved( MouseEvent e ) { }
   public void mouseDragged( MouseEvent e ) {
      int x = e.getX();
      int y = e.getY();
      Zeichnung.fillOval(x-5,y-5,10,10);
      repaint();
      e.consume();
   }

   public void update( Graphics g ) {
      g.drawImage( backbuffer, 0, 0, this );
   }

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


----------



## André Uhres (24. Jan 2007)

```
if (e.getActionCommand().equals(redButton.getActionCommand())) {
...
    public void mouseDragged( MouseEvent e ) {
        zeichnung.setColor(currentColor);
...
```
Variablennamen sollen mit kleinem Anfangsbuchstaben geschrieben werden!
RedButton -> redButton
Zeichnung -> zeichnung


----------



## Cheera (24. Jan 2007)

Danke!!!!  klappt wunderbar !  :toll:  :toll:  :toll:


----------

