# Anfänger braucht Hilfe



## xJay (19. Mai 2014)

Guten Abend... 
Wahrscheinlich fragen hier jeden Tag tausende unwissende nach hilfe aber ich hoffe mir kann einer helfen... ich soll bis freitag den folgenden quellcode erklären können... kann mir eventuell einer kommentare hinter die zeilen machen, sodass ich es verstehe... ist zwar ein bisschen arbeit aber wäre echt sehr nett, da ich es sonst nicht schaffe :/


```
package figuren0;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Grafik0 extends JFrame implements ActionListener
{
  private JButton Knopf;

  public void drawImage()
  {
 	Graphics Stift = getGraphics();
    Dimension Groesse = getSize();
    int Breite = Groesse.width;
    int Hoehe  = Groesse.height;
    Stift.drawRect (20,40, Breite-40,Hoehe-60);
    Stift.drawOval (30,50, Breite-60,Hoehe-80);
    Stift.drawLine (Breite/2,40, Breite/2,Hoehe-20);
    Stift.drawLine (20, Hoehe/2+10, Breite-20,Hoehe/2+10);
  }
  
  public Grafik0 ()
  {
    super ("Grafik0");
    JPanel Platte = new JPanel ();
    Platte.setLayout (new FlowLayout());
    // Button erzeugen, verknüpfen, layouten
    Knopf = new JButton("Mal mal!");
    Knopf.addActionListener (this);
    Knopf.setFont (new Font ("Arial", Font.BOLD, 24));
    Box Oben = Box.createHorizontalBox();
    Oben.setPreferredSize (new Dimension(400,100));
    // Alles einsetzen 	    
    Platte.add (Oben); 
    Platte.add (Knopf); 
    setContentPane (Platte);
  }
  
  public void actionPerformed (ActionEvent Ereignis)
  {
    drawImage ();
  }
  
  public static void main(String[] args)
  {
    Grafik0 Rahmen = new Grafik0 ();
    Rahmen.setSize (400,300);
    Rahmen.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    Rahmen.setVisible(true);
  }
}
```


----------



## javampir (19. Mai 2014)

Hi,
wo hakts denn? Welche zeilen verstehst du nicht? Wenn du dich schon mit GUI-Programmierung beschäftigst, solltest du doch wenigstens allgemein mit der Zeile

```
private JButton Knopf
```
anfangen können? (Tipp: Auch wenn der Code nicht von dir ist, datenfelder sollte man klein schreiben)
javampir


----------



## xJay (19. Mai 2014)

Ja ich sollte eben genau dieses programm beschreiben ... ist aus einem buch.
und es hakt eigentlich bei dem ganzen programm.
ich kenn zwar die befehle aber ich weiß eben nicht was diese befehle an dem fenster ausmachen.
also zum beispiel welche zahl die größe des fensters festlegt oder welche den radius des Kreises bzw der ellipse beschreibt.


----------



## Gucky (20. Mai 2014)

Läuft das Programm denn? Also ist es kompilierbar und es werden keine Exceptions geworfen?
Dann kannst du es mit dem Debugger mal von Anfang an zeilenweise ausführen und dir nach jeder Zeile die Veränderung angucken und ggf. aufschreiben.

Oder du selbst spielst Debugger und führst den Code selber im Kopf zeilenweise aus. Es hilft nichts, wenn du Methode für Methode beschreibst. Du solltest eher den Programmablauf beschreiben.


----------



## Phash (20. Mai 2014)

Nimm den code, 
Führ ihn aus,  schau was passiert. 
Ändere einen Parameter,  führ es aus,  schau was passiert.
Das machst du, bis du es verstanden hast. 

Wenn wir es dir vorkauen,  hat du nichts davon


Btw. Ist das JavaSE und nicht EE


----------



## xJay (25. Mai 2014)

Kann mir vielleicht einer das Programm so umschreiben, dass dieser button mit dem "mal mal" weg ist und die zeichnung sofort erscheint ?.
ich bekomme es einfach nicht hin :/


----------



## Phash (25. Mai 2014)

Lösche die Zeilen mit dem Knopf,  und für die Methode drawimage aus.


----------



## stg (25. Mai 2014)

Bzw solltest du statt deiner Methode 
	
	
	
	





```
#drawimage()
```
 lieber die Methode 
	
	
	
	





```
#paint(Graphics g)
```
 aus der Klasse JFrame überschreiben.


----------



## Gucky (25. Mai 2014)

Da muss ich kurz intervenieren und sagen, dass es paintComponent(Graphics) in Swing (also alle J... Components) sein sollte


----------



## stg (25. Mai 2014)

@Gucky ... dann guck noch mal genau hin. Bei nem JFrame wird es schwierig paintComponent zu überschreiben :bae:

Abgesehen davon hast du natürlich im Normalfall Recht, JFrame stellt als ToplevelContainer nur eine Ausnahme dar. Und wir lassen hier mal vollkommen außen vor, dass man in einen JFrame normalerweise gar nicht direkt malen sollte...


----------

