tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
22
ZUGRIFFE
876
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    ipspy4711 ipspy4711 ist offline Mitglied
    Registriert seit
    Jul 2011
    Beiträge
    17
    Hallo zusammen,

    ich bin noch relativ am Anfang meiner Javakünste und hänge im Moment stark. Jetzt hoffe ich, dass ihr mir helfen könnt:

    Ich habe ein GUI entwickelt, auf dem ich verschiedene Figuren abbilden möchte. Mein GUI ist ein JFrame in das ich ein Objekt "Anzeige" der Klasse "Zeichnung" gesetzt habe.

    Nun habe ich eine Klasse "Zeichnung", die ein "extends JComponent" enhält, erstellt und dort die die Methode paintComponent() überschrieben. Wenn ich nun in meinem GUI nacheinander einige Objekte zeichnen möchte, erhalte ich in meinem GUI nur das letzte definierte Objekt. Selbst wenn ich nur einmal das repaint() aufrufe, erhalte ich nur das letzte Objekt. Kann mir einer sagen, was ich falsch mache?

    Meine Methode im GUI:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
     public void zeichne()
        {
            Anzeige.setzeFarbe("schwarz");
            Anzeige.setzeFigur(new Ellipse2D.Float(20, 300, 10, 10));
            Anzeige.repaint();
            Anzeige.setzeFigur(new Ellipse2D.Float(300, 20, 10, 10));
            Anzeige.repaint();
            Anzeige.setzeFigur(new Line2D.Float(20, 300, 300, 20));
            Anzeige.setzeLinienstaerke(3);
            Anzeige.repaint();
        }

    Meine Klasse Zeichnung:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    
    import java.awt.*;
    import javax.swing.*;
     
    class Zeichnung extends JComponent
    {
        private static int linienstaerke = 1;
     
        private Shape figur;
        private String farbe;
        private Image zeichnungsImage;
        
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            if(figur!=null && farbe!=null)
            {
                Graphics2D g2d = (Graphics2D)g;
                
                if (farbe.equals("rot")) 
                {
                    g2d.setColor(Color.red);
                } 
                else if (farbe.equals("schwarz")) 
                {
                    g2d.setColor(Color.black);                
                } 
                else if (farbe.equals("blau")) 
                {
                    g2d.setColor(Color.blue);
                } 
                else if (farbe.equals("gelb"))
                {
                    g2d.setColor(Color.yellow);
                } 
                else if (farbe.equals("gruen"))
                {
                    g2d.setColor(Color.green);
                } 
                else if (farbe.equals("lila")) 
                {
                    g2d.setColor(Color.magenta);
                } 
                else if (farbe.equals("orange"))
                {
                    g2d.setColor(Color.orange);
                } 
                else 
                {
                    g2d.setColor(Color.black);
                }
                g2d.setStroke(new BasicStroke(linienstaerke));
                g2d.fill(figur);
                g2d.draw(figur);
            }
        }
        
        public void setzeLinienstaerke(int linienstaerke)
        {
            this.linienstaerke = linienstaerke;
        }
        
        public void setzeFarbe(String farbe) {
            this.farbe = farbe;
        }
     
        public void setzeFigur(Shape figur) {
            this.figur = figur;
        }
    }

    Vielen Dank schon jetzt für die, die sich da hineindenken!
     

  2. #2
    SE Tutorials.de Gastzugang
    Das ist einfach : du manipulierst immer nur ein und dasselbe Graphics-Objekt was natürlich immer die letzte Figur darstellt da die anderen überschrieben werden. Willst du mehrere Objekte darstellen musst du auch mehrere Objekte erzeugen.

    Am einfachste lässt sich das anhand eines einfach JButtons erklären :
    Du hast EINEN JButton und weist ihm einen Text zu ... dann addest du ihn auf das JFrame und lässt ihn zeichnen. Danach setzt du für diesen eben gezeichneten JButton einen neuen Text und addest ihn wieder auf das JFrame ... diesmal allerdings in einer anderen Position. Da nun der JButton nur die neue Position und auch nur den neuen Text kenn wird er mit dem neuen Text an dieser nun neuen Position gezeichnet. Dabei wird allerdings die alte Zeichnung des JButtons wieder übermalt da ja an dieser Stelle nun nichts mehr ist.

    Es ist einer der Grundsätze das EINE JComponent nur EINEN Zustand hat und sich auch nur EINMAL auf dem Container befindet. Daraus lässt sich *wie oben bereits erwähnt* schlussfolgern : wenn du mehrere Objekte gleichzeitig auf dem Container haben willst musst du diese auch als eigenständige Objekte in deinem Code erzeugen. Mit nur einer JComponent ist sowas nicht möglich.

    *Zu mindest nicht unter Swing ... unter AWT wäre es mit etws Aufwand möglich ... sollte man aber nicht machen.*
    ipspy4711 bedankt sich. 

  3. #3
    ipspy4711 ipspy4711 ist offline Mitglied
    Registriert seit
    Jul 2011
    Beiträge
    17
    Hey, vielen Dank für die schnelle Antwort. Bedeutet das dann, dass ich eher im GUI ein JPanel als Datenfeld setzen sollte und in dieses JPanel soviele Instanzen, wie ich von der Klasse "Zeichnung" benötige "adden" muss? Oder gibt es eine einfachere Möglichkeit. Sorry, wenn die Frage zu "einfach" ist. Sitze inzwischen seit knappen 8 Std. an dem Problem und sehe glaub ich langsam den Wald vor lauter Bäumen nicht mehr.
     

  4. #4
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Richtig. Jedes graphische Element, das du irgendwo hinzufügst, darf nur ein mal hinzugefügt werden. Daher musst du z.B. für jeden JButton, den man sehen soll, eine neue Instanz erzeugen.

    BTW: 8 Stunden... dann mach doch ne Pause und genieße das Wetter
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  5. #5
    ipspy4711 ipspy4711 ist offline Mitglied
    Registriert seit
    Jul 2011
    Beiträge
    17
    leider regnet es hier fast durchgängig, wo ist die Sonne******** Hab aber zwischendurch immer mal wieder Pausen gemacht. Ich will auch endlich mal Feierabend machen, weiß aber, wenn ich das Problem nicht gelöst kriege, werd ich mich in meinen Alpträumen damit rumschlagen...

    Ich habe das probiert und die Klasse Zeichnung mehfrach instanziert und in das Panel, in dem es angezeigt werden soll, eingefügt. Aber irgendwie will das ganze nicht so, wie ich es will Eigentlich dachte ich, dass ich über die Methode updateUI() das Panel so updaten kann, dass es im Fenster angezeigt wird. Leider bleibt aber alles weiß.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    import javax.swing.border.*;
     
    public class GUI
    {
        private JFrame fenster;
        private JPanel anzeige;
        private JLable ueberschrift;
     
        
        public GUI()
        {
            fensterErzeugen();
        }
     
       
        public void fensterErzeugen()
        {
            fenster = new JFrame("Anzeige");
            JPanel contentPane = (JPanel) fenster.getContentPane();
            contentPane.setLayout(new BorderLayout());
            contentPane.setBorder(new EmptyBorder(6,6,6,6));
            
            // Werkzeugleiste erstellen
            JPanel werkzeugleiste = new JPanel();
            werkzeugleiste.setLayout(new GridLayout(0,1));
                   
            JButton button1 = new JButton ("Button");
            knotenHinzufuegen.addActionListener(new ActionListener(){
                          public void actionPerformed(ActionEvent event) {
                                einfuegen();
                          }
            });
            werkzeugleiste.add(button1);
     
            JButton button2= new JButton("Button");
            farbeKnoten.addActionListener(new ActionListener(){
                          public void actionPerformed(ActionEvent event) {
                                aendern();
                          }
            });
            werkzeugleiste.add(button2);
            .....
            
            JPanel anordnung = new JPanel();
            anordnung.add(werkzeugleiste);
            contentPane.add(anordnung, BorderLayout.WEST);
            
            
            // Contentbereich erstellen, in dem die Graphics eingefügt werden sollen
            JPanel anzeigehintergrund = new JPanel();
            anzeigehintergrund.setBorder(new EtchedBorder());
            anzeigehintergrund.setBackground(new Color(255, 255, 255));
            anzeigehintergrund.setLayout(new BorderLayout());
            
            anzeige= new JPanel();
            anzeige.setBackground(new Color(255, 255, 255));
            ueberschrift = new JLabel("Hier entsteht mein Muster");
            anzeigehintergrund.add(anzeige, BorderLayout.CENTER);
            anzeigehintergrund.add(ueberschrift, BorderLayout.NORTH);
            
            contentPane.add(anzeigehintergrund, BorderLayout.CENTER);
                 
            fenster.setVisible(true);
            
        }
    }

    und die Methode, die eigentlich funktionieren sollte - zumindest in meinen Augen

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    public void zeichne()
        {
            Zeichnung kreis1 = new Zeichnung();
            kreis1.setzeFarbe("schwarz");
            kreis1.setzeFigur(new Ellipse2D.Float(20, 300, 10, 10));
            kreis1.repaint();
            graphAnzeige.add(kreis1);
            
            Zeichnung kreis2= new Zeichnung();
            kreis2.setzeFigur(new Ellipse2D.Float(300, 20, 10, 10));
            kreis2.repaint();
            anzeige.add(kreis2);
            
            Zeichnung linie= new Zeichnung();
            linie.setzeFigur(new Line2D.Float(20, 300, 300, 20));
            linie.setzeLinienstaerke(3);
            linie.repaint();
            anzeige.add(linie);
            
            anzeige.updateUI();
        }
     

  6. #6
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Hi,
    versuchs mal mit der Methode repaint().

    Grüße

    Fabio
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  7. #7
    SE Tutorials.de Gastzugang
    Ich würde generell mal
    Code java:
    1
    2
    
    JFrame.validate();
    JFrame.update(JFrame.getGraphics();
    versuchen wenn du schon wie wild drin rumzeichnest WÄHREND das JFrame angezeigt wird.
     

  8. #8
    ipspy4711 ipspy4711 ist offline Mitglied
    Registriert seit
    Jul 2011
    Beiträge
    17
    Einen wunderschönen guten Morgen alle zusammen,

    ich zeichne doch nicht "wild" herum, das ist alles geplant.
    Leider funktioniert weder ein repaint() noch ein JFrame.validate(), noch ein JFrame.update(JFrame.getGraphics()). Es muss doch irgendwie möglich sein, eine Zeichnung darzustellen, wenn das JFrame angezeigt wird, oder******
     

  9. #9
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Mal ein Tipp am Rande. Zeichne auf ein JPanel und füge dieses zum JFrame hinzu. Das JPanel kannst du auch repainten lassen.
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  10. #10
    ipspy4711 ipspy4711 ist offline Mitglied
    Registriert seit
    Jul 2011
    Beiträge
    17
    äähhhmm... ich dachte eigentlich, dass ich nichts anderes gemacht habe... in meinem Code oben hab ich doch ein JPanel "anzeige", das ich in das JFrame "fenster" eingefügt habe. Danach rufe ich die Methode "zeichne" auf und adde die Instanzen meiner Klasse "Zeichnung" in das JPanel. Oder steh ich jetzt völlig neben mir******!
     

  11. #11
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Sorry, stand grad etwas neben mir. Ich meinte das so, dass du eine Klasse machst, die von JPanel abgeleitet ist. So z.B.:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
        private final class Painter extends JPanel
        {
            @Override
            public void paint(Graphics g) {
                super.paint(g);
                // ...
                // Zeichne was immer du willst
                // ...
            }
        }

    und dann sollte es auch eigentlich funktionieren.
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  12. #12
    ipspy4711 ipspy4711 ist offline Mitglied
    Registriert seit
    Jul 2011
    Beiträge
    17
    ah ok, jetzt versteh ich dich. So ganz komme ich allerdings noch nicht mit. Ich habe ein JFrame, das mehrere Komponenten beinhaltet und diese über das BorderLayout verwaltet. Menüzeile, Werkzeugleiste, meineZeichenfläche usw. Die Zeichenfläche ist mein JPanel und in diese Zeichenfläche sollen sämtliche Instanzen der Klasse "Zeichnung" - bei dir "Painter" genannt - reingezeichnet werden. Wenn ich die Klasse "Painter" nun so umgestalte, wie du es vorschlägst, wie bekomme ich die Instanzen dann in mein JPanel "Zeichenfläche" übertragen?

    Sorry, wenn ich vielleicht so dumm frage, das ist erst mein zweites GUI, das erste hat - zum Glück - problemlos geklappt.
     

  13. #13
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Du bräuchtest dein Zeichnung-Objekt nicht umbedingt. Du kannst das alles direkt in der paint(..)-Methode definieren und zeichnen lassen.

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
        private final class Painter extends JPanel
        {
            @Override
            public void paint(Graphics g) {
                super.paint(g);
     
                Graphics2D g2 = (Graphics2D) g;
     
                g2.setColor(Color.BLACK);
                g2.draw(new float+java.sun.com&btnI=I%27m%20Feeling%20Lucky">Ellipse2D.Float(20, 300, 10, 10));
     
                g2.draw(new float+java.sun.com&btnI=I%27m%20Feeling%20Lucky">Ellipse2D.Float(300, 20, 10, 10));
     
                BasicStroke stroke = new BasicStroke(
                        5 // Linienstärke
                );
                g2.setStroke(stroke);
                g2.draw(new float+java.sun.com&btnI=I%27m%20Feeling%20Lucky">Line2D.Float(20, 300, 300, 20);
                
                // ...
                // Zeichne was immer du willst
                // ...
            }
        }
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  14. #14
    ipspy4711 ipspy4711 ist offline Mitglied
    Registriert seit
    Jul 2011
    Beiträge
    17
    Sorry, aber ich glaube du meinst etwas anderes als ich. Ich versuch es mal bildlich zu erklären.

    Ich hab eine Klasse namens "GUI" ( Bild GUI.gif im Anhang). Die weiße Fläche in dem GUI ist mein JPanel "anzeige". Zusätzlich habe ich eine Klasse Zeichnung:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    
    import java.awt.*;
    import java.awt.geom.*;
    import javax.swing.*;
     
    class Zeichnung extends JPanel
    {
        private static int linienstaerke = 1;
     
        private Shape figur;
        private String farbe;
        
        @Override
        public void paint(Graphics g) {
            super.paint(g);
            if(figur!=null && farbe!=null)
            {
                Graphics2D g2d = (Graphics2D)g;
                
                if (farbe.equals("rot")) 
                {
                    g2d.setColor(Color.red);
                } 
                else if (farbe.equals("schwarz")) 
                {
                    g2d.setColor(Color.black);                
                } 
                else if (farbe.equals("blau")) 
                {
                    g2d.setColor(Color.blue);
                } 
                else if (farbe.equals("gelb"))
                {
                    g2d.setColor(Color.yellow);
                } 
                else if (farbe.equals("gruen"))
                {
                    g2d.setColor(Color.green);
                } 
                else if (farbe.equals("lila")) 
                {
                    g2d.setColor(Color.magenta);
                } 
                else if (farbe.equals("orange"))
                {
                    g2d.setColor(Color.orange);
                } 
                else 
                {
                    g2d.setColor(Color.black);
                }
                g2d.setStroke(new BasicStroke(linienstaerke));
                g2d.fill(figur);
                g2d.draw(figur);
            }
        }
        
        public void setzeLinienstaerke(int linienstaerke)
        {
            this.linienstaerke = linienstaerke;
        }
        
        public void setzeFarbe(String farbe) {
            this.farbe = farbe;
        }
     
        public void setzeFigur(Shape figur) {
            this.figur = figur;
        }
    }

    Da ich immer wieder Punkte oder Linien hinzufügen oder rausnehmen will, habe ich in meiner Klasse "GUI" die Methode "zeichne" mit der ich mehrere Instanzen der Klasse "Zeichnung" erzeuge und in mein JPanel "anzeige" (in der Klasse GUI) adde.

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    public void zeichne()
        {
            Zeichnung kreis1 = new Zeichnung();
            kreis1.setzeFarbe("schwarz");
            kreis1.setzeFigur(new float+java.sun.com&btnI=I%27m%20Feeling%20Lucky">Ellipse2D.Float(20, 300, 10, 10));
            kreis1.repaint();
            graphAnzeige.add(kreis1);
            
            Zeichnung kreis2= new Zeichnung();
            kreis2.setzeFigur(new float+java.sun.com&btnI=I%27m%20Feeling%20Lucky">Ellipse2D.Float(300, 20, 10, 10));
            kreis2.repaint();
            anzeige.add(kreis2);
            
            Zeichnung linie= new Zeichnung();
            linie.setzeFigur(new float+java.sun.com&btnI=I%27m%20Feeling%20Lucky">Line2D.Float(20, 300, 300, 20));
            linie.setzeLinienstaerke(3);
            linie.repaint();
            anzeige.add(linie);
            anzeige.repaint();
            anzeigehintergrund.add(anzeige);     // Die Anzeige wird auf einen Hintergrund (auch JPanel) gelegt, da noch ein JLabel mit einer Überschrift angefügt wird
            anzeigehintergrund.updateUI();
     
    [B][/B]
        }

    Nachdem ich die Methode "zeichne()" aufgerufen habe, erscheinen in meiner Anzeige nur drei graue Quadrate nebeneinander, aber nicht die Graphics, die ich erzeugt habe.

    Die Klasse "Painter", die du mir gegeben hast, entspricht in etwa meiner Klasse "Zeichnung". Mein Problem ist jetzt, dass ich auf dem GUI keinerlei Elemente angezeigt bekomme - bis auf die drei grauen Quadrate.

    Warum erscheinen hier drei graue Quadrate und nicht meine gezeichneten Graphics?
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Mehrere Komponenten zeichnen-gui.jpg   Mehrere Komponenten zeichnen-gui_nach_zeichnen-.jpg  

     

  15. #15
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Ah, ok. Das hast du also vor. Dann würde ich es wohl doch eher so machen:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    
        private final class Painter extends JPanel
        {
            private final List<Zeichnung> zeichnungen;
            
            /**
             * 
             */
            public Painter() {
                this.zeichnungen = new ArrayList<Zeichnung>();
            }
            
            /**
             * @param zeichnung
             */
            public void addZeichnung(Zeichnung zeichnung) {
                zeichnungen.add(zeichnung);
                repaint();
            }
            
            /**
             * @param zeichnung
             */
            public void removeZeichnung(Zeichnung zeichnung) {
                zeichnungen.remove(zeichnung);
                repaint();
            }
            
            /* (non-Javadoc)
             * @see javax.swing.JComponent#paint(java.awt.Graphics)
             */
            @Override
            public void paint(Graphics g) {
                super.paint(g);
                
                for(int i = 0; i < zeichnungen.size(); i++) {
                    zeichnungen.get(i).paint(g);
                }
            }
        }

    // Edit: Deine Klasse Zeichnung brauchst du dann auch nicht von JPanel abzuleiten, wenn du nur auf einem JPanel zeichnen willst.
    Geändert von Fabio Hellmann (16.08.11 um 09:46 Uhr)
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

Ähnliche Themen

  1. mehrere Objekte zeichnen und verschieben
    Von twista im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 01.08.09, 02:44
  2. Antworten: 1
    Letzter Beitrag: 30.10.08, 19:11
  3. Säulen Zeichnen, Drachen zeichnen
    Von RudeJava im Forum Photoshop
    Antworten: 34
    Letzter Beitrag: 17.07.05, 09:34
  4. mehrere ItemListener auf Komponenten Array
    Von Toastbrot666 im Forum Java
    Antworten: 1
    Letzter Beitrag: 10.02.05, 14:47