Grafik erstellen und in Frame einfügen

Status
Nicht offen für weitere Antworten.

Arvid

Mitglied
Hallo,

mein Programm zeigt mir einen Frame mit der Mandelbrotmenge, an die ich per Mausklick digital ran- und rauszoomen kann.

Mein Problem ist dass der Frame pro Zeichnung ca 3 sekunden braucht bis das komplette bild angezeigt wird, also würde ich ihn gerne erst irgendwo im hintergrund oder einer externen datei zeichnen lassen und ihn sobald er mit zeichnen fertig ist in meinen frame einfügen, sodass er dann wenn ich wieder ran - oder rauszoome einfach so bleibt wie er ist bis das neue bild im hintergrund gezeichnet ist und somit das alte ersetzen kann...
weil das nervt schon wenn sich die ganze zeit beim zoomen das bild von links nach rechts aufbaut und außerdem ist es bestimmt auch schneller wenn sich das bild im hintergrund aufbaut vermute ich mal

Java:
package de.straube.Tests;


import java.awt.Color;
import java.awt.Event;
import java.awt.Frame;
import java.awt.Graphics;

public class Mandelbrotmenge
    extends Frame
{

    /**
     * 
     * 
     */
    private static final long serialVersionUID = 1L;

    int MAX_COUNTER = 200;

    double amin = -1.5;
    double amax = 0.5;
    double bmin = -1;
    double bmax = 1;

    int xOffset = 0;
    int yOffset = 30;
    int counter = 0;


    public static void main(String arguments[])
    {
        Mandelbrotmenge frame = new Mandelbrotmenge();
        frame.setLocation(100, 100);
        frame.setVisible(true);
        frame.setSize(800, 800);
    }


    Mandelbrotmenge()
    {
        super("Mandelbrotmenge");
    }


    public boolean mouseUp(Event e, int x, int y)
    {
        if (e.modifiers == 0)
        {
            double width = this.getSize().width;
            double height = this.getSize().height;

            double qa = x / width;
            double da = amax - amin;
            double a = amin + da * qa;
            // neuer Bereich ist nur halb so groß
            da = da / 2;
            // neues amin = a - die Hälfte des neuen Bereichs
            amin = a - da / 2;
            amax = a + da / 2;

            double qb = y / height;
            double db = bmax - bmin;
            double b = bmin + db * qb;
            // neue Bereich ist nur halb so groß
            db = db / 2;
            // neues bmin = b - die Hälfte des neuen Bereichs
            bmin = b - db / 2;
            bmax = b + db / 2;

            this.update(this.getGraphics());
        }
        if (e.modifiers == 4)
        {
            double width = this.getSize().width;
            double height = this.getSize().height;

            double qa = x / width;
            double da = amax - amin;
            double a = amin + da * qa;
            // neuer Bereich ist nur halb so groß
            da = da / 2;
            // neues amin = a - die Hälfte des neuen Bereichs
            amin = a - da * 2;
            amax = a + da * 2;

            double qb = y / height;
            double db = bmax - bmin;
            double b = bmin + db * qb;
            // neue Bereich ist nur halb so groß
            db = db / 2;
            // neues bmin = b - die Hälfte des neuen Bereichs
            bmin = b - db * 2;
            bmax = b + db * 2;

            this.update(this.getGraphics());
        }
        if (e.modifiers == 1)
        {
            double width = this.getSize().width;
            double height = this.getSize().height;

            double qa = x / width;
            double da = amax - amin;
            double a = amin + da * qa;
            // neuer Bereich ist nur halb so groß
            da = da / 2;
            // neues amin = a - die Hälfte des neuen Bereichs
            amin = a - da;
            amax = a + da;

            double qb = y / height;
            double db = bmax - bmin;
            double b = bmin + db * qb;
            // neue Bereich ist nur halb so groß
            db = db / 2;
            // neues bmin = b - die Hälfte des neuen Bereichs
            bmin = b - db;
            bmax = b + db;

            this.update(this.getGraphics());
        }
        return true;
    }


    public void paint(Graphics bs)
    {
        int zaehler;

        int ysize = this.getSize().height - 35;
        int xsize = this.getSize().width - 5;

        double dsx = (amax - amin) / xsize;
        double dsy = (bmax - bmin) / ysize;

        double a = amin;
        for (int s = 0; s <= xsize; s++ )
        {
            double b = bmin;
            for (int r = 0; r <= ysize; r++ )
            {
                zaehler = berechnePunkt(a, b);
                bs.setColor(ermittleFarbe(zaehler));
                bs.drawLine(s + xOffset, r + yOffset, s + xOffset, r + yOffset);
                b = b + dsy;
            }
            a = a + dsx;
        }
    }


    private int berechnePunkt(double a, double b)
    {
        int zaehler = 0;
        double x = 0;
        double y = 0;
        double xx = 0;
        double squareRoot = 0;

        while (true)
        {
            squareRoot = Math.sqrt(x * x + y * y);
            if (squareRoot >= 3)
                break;

            zaehler++ ;
            if (zaehler == MAX_COUNTER)
                break;

            xx = x * x - y * y + a;
            y = 2 * x * y + b;
            x = xx;
        }
        // Ende Berechnung eines Punktes *************************
        return zaehler;
    }


    private Color ermittleFarbe(int zaehler)
    {
        if (zaehler == MAX_COUNTER)
        {
            return Color.black;
        }
        else if (zaehler < 4)
        {
            return Color.magenta;
        }
        else if (zaehler == 5)
        {
            return Color.pink;
        }
        else if (zaehler == 6)
        {
            return Color.blue;
        }
        else if (zaehler == 7)
        {
            return Color.red;
        }
        else if (zaehler == 8)
        {
            return Color.orange;
        }
        else if (zaehler == 9)
        {
            return Color.cyan;
        }
        else if (zaehler == 10)
        {
            return Color.red;
        }
        else if (zaehler <= 20)
        {
            return Color.green;
        }
        else if (zaehler <= 30)
        {
            return Color.lightGray;
        }
        else if (zaehler <= 40)
        {
            return Color.blue;
        }
        else if (zaehler <= 50)
        {
            return Color.yellow;
        }
        else if (zaehler <= 60)
        {
            return Color.magenta;
        }
        else if (zaehler <= 70)
        {
            return Color.gray;
        }
        else if (zaehler <= 80)
        {
            return Color.orange;
        }
        else if (zaehler <= 90)
        {
            return Color.white;
        }
        else if (zaehler <= 100)
        {
            return Color.DARK_GRAY;
        }
        else if (zaehler <= 110)
        {
            return Color.ORANGE;
        }
        else if (zaehler <= 120)
        {
            return Color.YELLOW;
        }
        else if (zaehler <= 130)
        {
            return Color.MAGENTA;
        }
        else if (zaehler <= 140)
        {
            return Color.GREEN;
        }
        else if (zaehler <= 150)
        {
            return Color.PINK;
        }
        else if (zaehler <= 160)
        {
            return Color.orange;
        }
        else if (zaehler <= 170)
        {
            return Color.blue;
        }
        else if (zaehler <= 180)
        {
            return Color.darkGray;
        }
        else if (zaehler <= 190)
        {
            return Color.LIGHT_GRAY;
        }
        else if (zaehler <= 200) { return Color.green; }
        return Color.yellow;
    }
}

vielen dank im vorraus
 
ich bin übrigens totaler Java anfänger also bitte nicht so kompliziert machen
Das programm hab ich fast zur hälfte von anderen quellcodes
 
benutzt swing statt awt dann sollte das problem nicht auftreten da swing double-buffering besitz. du müsstest also statt von einem java.awt.frame ein ein javax.swing.JFrame erben. darauf addest du ein JPanel und überschreibst dessen paintComponent() methode also ungefähr so:
Java:
this.add(new JPanel(){
@Override
 public void painComponent(Graphics bs)
    {
        super.paintComponent();
        int zaehler;
 
        int ysize = this.getSize().height - 35;
        int xsize = this.getSize().width - 5;
 
        double dsx = (amax - amin) / xsize;
        double dsy = (bmax - bmin) / ysize;
 
        double a = amin;
        for (int s = 0; s <= xsize; s++ )
        {
            double b = bmin;
            for (int r = 0; r <= ysize; r++ )
            {
                zaehler = berechnePunkt(a, b);
                bs.setColor(ermittleFarbe(zaehler));
                bs.drawLine(s + xOffset, r + yOffset, s + xOffset, r + yOffset);
                b = b + dsy;
            }
            a = a + dsx;
        }
    }
});

zum code an sich sag ich mal nix...
aber guck dir am besten mal folgenden link an:insel
 
hmm also danke erstmal aber ich weiß nicht genau was du meinst, wenn ich
Java:
    public void paint(Graphics bs)
    {
        int zaehler;

        int ysize = this.getSize().height - 35;
        int xsize = this.getSize().width - 5;

        double dsx = (amax - amin) / xsize;
        double dsy = (bmax - bmin) / ysize;

        double a = amin;
        for (int s = 0; s <= xsize; s++ )
        {
            double b = bmin;
            for (int r = 0; r <= ysize; r++ )
            {
                zaehler = berechnePunkt(a, b);
                bs.setColor(ermittleFarbe(zaehler));
                bs.drawLine(s + xOffset, r + yOffset, s + xOffset, r + yOffset);
                b = b + dsy;
            }
            a = a + dsx;
        }
    }
mit deinem code
Java:
this.add(new JPanel(){
@Override
 public void painComponent(Graphics bs)
    {
        super.paintComponent();
        int zaehler;
 
        int ysize = this.getSize().height - 35;
        int xsize = this.getSize().width - 5;
 
        double dsx = (amax - amin) / xsize;
        double dsy = (bmax - bmin) / ysize;
 
        double a = amin;
        for (int s = 0; s <= xsize; s++ )
        {
            double b = bmin;
            for (int r = 0; r <= ysize; r++ )
            {
                zaehler = berechnePunkt(a, b);
                bs.setColor(ermittleFarbe(zaehler));
                bs.drawLine(s + xOffset, r + yOffset, s + xOffset, r + yOffset);
                b = b + dsy;
            }
            a = a + dsx;
        }
    }
});
ersetze kommen mir erstmal 3 fehlermeldungen ohne lösungsvorschläge und da ich ziemlicher anfänger bin kann ich nicht viel damit anfangen 🙁

1. fehler direkt über deinem code bei } (Syntax error)
2. fehler bei JPanel (JPanel cannot be resolved to a type
3. felher unten beim ; (Syntax error)

oder soll ich das garnicht ersetzen sondern nur irgendwie zwischen rein quetschen?

danke für die hilfe 🙂
 
ups 😳

also ich habs jetzt korrigiert und habe jetzt auch alles ohne fehlermeldungen aber mir erscheint jetzt nur ein leerer frame!?! ???:L

Hier was jetzt drinsteht:
Java:
    public void paint(Graphics bs)
    {
        this.add(new JPanel(){
            /**
             * 
             */
            private static final long serialVersionUID = 1L;

            @Override
             public void paintComponent(Graphics bs)
                {
                    super.paintComponent(bs);
                    int zaehler;
             
                    int ysize = this.getSize().height - 35;
                    int xsize = this.getSize().width - 5;
             
                    double dsx = (amax - amin) / xsize;
                    double dsy = (bmax - bmin) / ysize;
             
                    double a = amin;
                    for (int s = 0; s <= xsize; s++ )
                    {
                        double b = bmin;
                        for (int r = 0; r <= ysize; r++ )
                        {
                            zaehler = berechnePunkt(a, b);
                            bs.setColor(ermittleFarbe(zaehler));
                            bs.drawLine(s + xOffset, r + yOffset, s + xOffset, r + yOffset);
                            b = b + dsy;
                        }
                        a = a + dsx;
                    }
                }
            });
    }
 
das kommt nicht in die paint() methode sondern einfach in die klasse anstatt der paint() methode

hab ich echt painComponent geschrieben? 😳
 
tut mir echt leid dass ichs immer noch nicht hab ich muss euch ja solangsam bestimmt echt auf die nerven gehen 😳

also ich hab jetzt:
Java:
    this.add(new JPanel(){
        /**
         * 
         */
        private static final long serialVersionUID = 1L;

        @Override
         public void paintComponent(Graphics bs)
            {
                super.paintComponent(bs);
                int zaehler;
         
                int ysize = this.getSize().height - 35;
                int xsize = this.getSize().width - 5;
         
                double dsx = (amax - amin) / xsize;
                double dsy = (bmax - bmin) / ysize;
         
                double a = amin;
                for (int s = 0; s <= xsize; s++ )
                {
                    double b = bmin;
                    for (int r = 0; r <= ysize; r++ )
                    {
                        zaehler = berechnePunkt(a, b);
                        bs.setColor(ermittleFarbe(zaehler));
                        bs.drawLine(s + xOffset, r + yOffset, s + xOffset, r + yOffset);
                        b = b + dsy;
                    }
                    a = a + dsx;
                }
            }
        });
und bekomme trotzdem noch fehler mit } über

this.add(new JPanel(){ (Syntax error on token }, delete this token)

und

ganz unten beim ; (Syntax error, insert "}" to complete MethodBody)

aber egal ob ich das so mache wie es dasteht oder ob ich was anderes versuche, dann kommen immer irgendwo andere fehler... ich check das grad echt nicht 🙁
 
ok tut mir leid ich habs! hätte einfach vor das ganze ein { und danach ein } machen müssen ich volldepp aber schneller laden und vorallem irgendwie im hintergrund laden so dass sich da nicht immer das blöde bild vor meinen augen neu aufbauen muss tuts leider immer noch nicht ???:L
 
erbst die klasse vllt noch von Frame oda hast du das schon auf JFrame umgeändert?

dir muss nix leidtun und du nervst auch niemanden das forum is schließlich da um zu helfen 😉
 
jop, genau das war der fehler ^^
jetzt läd das bild im hintergrund 🙂
ist zwar immer noch nicht schneller aber kann man wohl nix machen!
Danke euch für die Hilfe
 
Also ich hab noch ein Problem, es läuft jetzt zwar alles wies soll was den frame und das bild angeht nur seitdem ich das in JFrame geändert hab geht das ran- und rauszoomen mit meinen Mausklickbefehlen nichtmehr und ich weiß nicht wie ich das problem lösen soll 🙁
hab zwar schon ein paar dinge versucht leider aber ohne erfolg

der code sieht jetzt im moment so aus:
Java:
package de.straube.Tests;


import java.awt.Color;
import java.awt.Dimension;
import java.awt.Event;
import java.awt.Graphics;
import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Mandelbrotmenge
    extends JFrame
{
    /**
     * 
     * 
     */
    
    private static final long serialVersionUID = 1L;

    int MAX_COUNTER = 200;

    double amin = -1.5;
    double amax = 0.5;
    double bmin = -1;
    double bmax = 1;

    int xOffset = 0;
    int yOffset = 30;
    int counter = 0;


    public static void main(String arguments[])
    {
        Mandelbrotmenge frame = new Mandelbrotmenge();
        frame.setVisible(true);
        frame.setSize(900, 900);
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        int left = (d.width - 900) / 2;
        int top = (d.height - 900) / 2;
        frame.setLocation(left, top);
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    Mandelbrotmenge()
    {
        super("Mandelbrotmenge");
    }

    public boolean mouseUp(Event e, int x, int y)
    {
        if (e.modifiers == 0)
        {
            double width = this.getSize().width;
            double height = this.getSize().height;

            double qa = x / width;
            double da = amax - amin;
            double a = amin + da * qa;
            // neuer Bereich ist nur halb so groß
            da = da / 2;
            // neues amin = a - die Hälfte des neuen Bereichs
            amin = a - da / 2;
            amax = a + da / 2;

            double qb = y / height;
            double db = bmax - bmin;
            double b = bmin + db * qb;
            // neue Bereich ist nur halb so groß
            db = db / 2;
            // neues bmin = b - die Hälfte des neuen Bereichs
            bmin = b - db / 2;
            bmax = b + db / 2;

            this.update(this.getGraphics());
        }
        if (e.modifiers == 4)
        {
            double width = this.getSize().width;
            double height = this.getSize().height;

            double qa = x / width;
            double da = amax - amin;
            double a = amin + da * qa;
            // neuer Bereich ist nur halb so groß
            da = da / 2;
            // neues amin = a - die Hälfte des neuen Bereichs
            amin = a - da * 2;
            amax = a + da * 2;

            double qb = y / height;
            double db = bmax - bmin;
            double b = bmin + db * qb;
            // neue Bereich ist nur halb so groß
            db = db / 2;
            // neues bmin = b - die Hälfte des neuen Bereichs
            bmin = b - db * 2;
            bmax = b + db * 2;

            this.update(this.getGraphics());
        }
        if (e.modifiers == 1)
        {
            double width = this.getSize().width;
            double height = this.getSize().height;

            double qa = x / width;
            double da = amax - amin;
            double a = amin + da * qa;
            // neuer Bereich ist nur halb so groß
            da = da / 2;
            // neues amin = a - die Hälfte des neuen Bereichs
            amin = a - da;
            amax = a + da;

            double qb = y / height;
            double db = bmax - bmin;
            double b = bmin + db * qb;
            // neue Bereich ist nur halb so groß
            db = db / 2;
            // neues bmin = b - die Hälfte des neuen Bereichs
            bmin = b - db;
            bmax = b + db;

            this.update(this.getGraphics());
        }
        return true;
    }

    {
        this.add(new JPanel()
        {
            /**
             * 
             */
            private static final long serialVersionUID = 1L;

            @Override
            public void paintComponent(Graphics bs)
            {
                super.paintComponent(bs);
                int zaehler;

                int ysize = this.getSize().height - 30;
                int xsize = this.getSize().width;

                double dsx = (amax - amin) / xsize;
                double dsy = (bmax - bmin) / ysize;

                double a = amin;
                for (int s = 0; s <= xsize; s++ )
                {
                    double b = bmin;
                    for (int r = 0; r <= ysize; r++ )
                    {
                        zaehler = berechnePunkt(a, b);
                        bs.setColor(ermittleFarbe(zaehler));
                        bs.drawLine(s + xOffset, r + yOffset, s + xOffset, r + yOffset);
                        b = b + dsy;
                    }
                    a = a + dsx;
                }
            }
        });
    }


    private int berechnePunkt(double a, double b)
    {
        int zaehler = 0;
        double x = 0;
        double y = 0;
        double xx = 0;
        double squareRoot = 0;

        while (true)
        {
            squareRoot = Math.sqrt(x * x + y * y);
            if (squareRoot >= 3)
                break;

            zaehler++ ;
            if (zaehler == MAX_COUNTER)
                break;

            xx = x * x - y * y + a;
            y = 2 * x * y + b;
            x = xx;
        }
        // Ende Berechnung eines Punktes *************************
        return zaehler;
    }


    private Color ermittleFarbe(int zaehler)
    {
        if (zaehler == MAX_COUNTER)
        {
            return Color.black;
        }
        else if (zaehler == 2)
        {
            return Color.blue;
        }
        else if (zaehler == 3)
        {
            return Color.green;
        }
        else if (zaehler == 4)
        {
            return Color.magenta;
        }
        else if (zaehler == 5)
        {
            return Color.pink;
        }
        else if (zaehler == 6)
        {
            return Color.blue;
        }
        else if (zaehler == 7)
        {
            return Color.red;
        }
        else if (zaehler == 8)
        {
            return Color.orange;
        }
        else if (zaehler == 9)
        {
            return Color.cyan;
        }
        else if (zaehler == 10)
        {
            return Color.red;
        }
        else if (zaehler == 11)
        {
            return Color.green;
        }
        else if (zaehler == 12)
        {
            return Color.cyan;
        }
        else if (zaehler == 13)
        {
            return Color.green;
        }
        else if (zaehler == 14)
        {
            return Color.yellow;
        }
        else if (zaehler == 15)
        {
            return Color.LIGHT_GRAY;
        }
        else if (zaehler == 16)
        {
            return Color.blue;
        }
        else if (zaehler == 17)
        {
            return Color.green;
        }
        else if (zaehler == 18)
        {
            return Color.orange;
        }
        else if (zaehler == 19)
        {
            return Color.DARK_GRAY;
        }
        else if (zaehler == 20)
        {
            return Color.green;
        }
        else if (zaehler == 21)
        {
            return Color.orange;
        }
        else if (zaehler == 22)
        {
            return Color.red;
        }
        else if (zaehler == 23)
        {
            return Color.green;
        }
        else if (zaehler == 24)
        {
            return Color.yellow;
        }
        else if (zaehler == 25)
        {
            return Color.red;
        }
        else if (zaehler == 26)
        {
            return Color.blue;
        }
        else if (zaehler == 27)
        {
            return Color.green;
        }
        else if (zaehler == 28)
        {
            return Color.orange;
        }
        else if (zaehler == 29)
        {
            return Color.blue;
        }
        else if (zaehler == 30)
        {
            return Color.lightGray;
        }
        else if (zaehler == 31)
        {
            return Color.green;
        }
        else if (zaehler == 32)
        {
            return Color.red;
        }
        else if (zaehler == 33)
        {
            return Color.magenta;
        }
        else if (zaehler == 34)
        {
            return Color.yellow;
        }
        else if (zaehler == 35)
        {
            return Color.green;
        }
        else if (zaehler == 36)
        {
            return Color.blue;
        }
        else if (zaehler == 37)
        {
            return Color.yellow;
        }
        else if (zaehler == 38)
        {
            return Color.orange;
        }
        else if (zaehler == 39)
        {
            return Color.green;
        }
        else if (zaehler == 40)
        {
            return Color.blue;
        }
        else if (zaehler == 41)
        {
            return Color.yellow;
        }
        else if (zaehler == 42)
        {
            return Color.red;
        }
        else if (zaehler == 43)
        {
            return Color.green;
        }
        else if (zaehler == 44)
        {
            return Color.yellow;
        }
        else if (zaehler == 45)
        {
            return Color.green;
        }
        else if (zaehler == 46)
        {
            return Color.blue;
        }
        else if (zaehler == 47)
        {
            return Color.red;
        }
        else if (zaehler == 48)
        {
            return Color.orange;
        }
        else if (zaehler == 49)
        {
            return Color.green;
        }
        else if (zaehler == 50)
        {
            return Color.yellow;
        }
        else if (zaehler == 51)
        {
            return Color.green;
        }
        else if (zaehler == 52)
        {
            return Color.magenta;
        }
        else if (zaehler == 53)
        {
            return Color.blue;
        }
        else if (zaehler == 54)
        {
            return Color.yellow;
        }
        else if (zaehler == 55)
        {
            return Color.green;
        }
        else if (zaehler == 56)
        {
            return Color.blue;
        }
        else if (zaehler == 57)
        {
            return Color.green;
        }
        else if (zaehler == 58)
        {
            return Color.pink;
        }
        else if (zaehler == 59)
        {
            return Color.green;
        }
        else if (zaehler == 60)
        {
            return Color.magenta;
        }
        else if (zaehler == 61)
        {
            return Color.blue;
        }
        else if (zaehler == 62)
        {
            return Color.red;
        }
        else if (zaehler == 63)
        {
            return Color.magenta;
        }
        else if (zaehler == 64)
        {
            return Color.yellow;
        }
        else if (zaehler == 65)
        {
            return Color.blue;
        }
        else if (zaehler == 66)
        {
            return Color.pink;
        }
        else if (zaehler == 67)
        {
            return Color.blue;
        }
        else if (zaehler == 68)
        {
            return Color.orange;
        }
        else if (zaehler == 69)
        {
            return Color.green;
        }
        else if (zaehler == 70)
        {
            return Color.gray;
        }
        else if (zaehler == 71)
        {
            return Color.blue;
        }
        else if (zaehler == 72)
        {
            return Color.red;
        }
        else if (zaehler == 73)
        {
            return Color.lightGray;
        }
        else if (zaehler == 74)
        {
            return Color.yellow;
        }
        else if (zaehler == 75)
        {
            return Color.blue;
        }
        else if (zaehler == 76)
        {
            return Color.orange;
        }
        else if (zaehler == 77)
        {
            return Color.blue;
        }
        else if (zaehler == 78)
        {
            return Color.orange;
        }
        else if (zaehler == 79)
        {
            return Color.blue;
        }
        else if (zaehler == 80)
        {
            return Color.gray;
        }
        else if (zaehler == 81)
        {
            return Color.yellow;
        }
        else if (zaehler == 82)
        {
            return Color.red;
        }
        else if (zaehler == 83)
        {
            return Color.green;
        }
        else if (zaehler == 84)
        {
            return Color.yellow;
        }
        else if (zaehler == 85)
        {
            return Color.blue;
        }
        else if (zaehler == 86)
        {
            return Color.red;
        }
        else if (zaehler == 87)
        {
            return Color.blue;
        }
        else if (zaehler == 88)
        {
            return Color.orange;
        }
        else if (zaehler == 89)
        {
            return Color.blue;
        }
        else if (zaehler == 90)
        {
            return Color.white;
        }
        else if (zaehler == 91)
        {
            return Color.blue;
        }
        else if (zaehler == 92)
        {
            return Color.red;
        }
        else if (zaehler == 93)
        {
            return Color.white;
        }
        else if (zaehler == 94)
        {
            return Color.yellow;
        }
        else if (zaehler == 95)
        {
            return Color.blue;
        }
        else if (zaehler == 96)
        {
            return Color.blue;
        }
        else if (zaehler == 97)
        {
            return Color.blue;
        }
        else if (zaehler == 98)
        {
            return Color.orange;
        }
        else if (zaehler == 99)
        {
            return Color.blue;
        }
        else if (zaehler == 100)
        {
            return Color.DARK_GRAY;
        }
        else if (zaehler == 101)
        {
            return Color.yellow;
        }
        else if (zaehler == 102)
        {
            return Color.red;
        }
        else if (zaehler == 103)
        {
            return Color.green;
        }
        else if (zaehler == 104)
        {
            return Color.yellow;
        }
        else if (zaehler == 105)
        {
            return Color.red;
        }
        else if (zaehler == 106)
        {
            return Color.blue;
        }
        else if (zaehler == 107)
        {
            return Color.green;
        }
        else if (zaehler == 108)
        {
            return Color.orange;
        }
        else if (zaehler == 109)
        {
            return Color.red;
        }
        else if (zaehler == 110)
        {
            return Color.white;
        }
        else if (zaehler == 111)
        {
            return Color.red;
        }
        else if (zaehler == 112)
        {
            return Color.blue;
        }
        else if (zaehler == 113)
        {
            return Color.red;
        }
        else if (zaehler == 114)
        {
            return Color.yellow;
        }
        else if (zaehler == 115)
        {
            return Color.red;
        }
        else if (zaehler == 116)
        {
            return Color.blue;
        }
        else if (zaehler == 117)
        {
            return Color.yellow;
        }
        else if (zaehler == 118)
        {
            return Color.orange;
        }
        else if (zaehler == 119)
        {
            return Color.red;
        }
        else if (zaehler == 120)
        {
            return Color.YELLOW;
        }
        else if (zaehler == 121)
        {
            return Color.red;
        }
        else if (zaehler == 122)
        {
            return Color.orange;
        }
        else if (zaehler == 123)
        {
            return Color.red;
        }
        else if (zaehler == 124)
        {
            return Color.yellow;
        }
        else if (zaehler == 125)
        {
            return Color.red;
        }
        else if (zaehler == 126)
        {
            return Color.blue;
        }
        else if (zaehler == 127)
        {
            return Color.gray;
        }
        else if (zaehler == 128)
        {
            return Color.orange;
        }
        else if (zaehler == 129)
        {
            return Color.red;
        }
        else if (zaehler == 130)
        {
            return Color.MAGENTA;
        }
        else if (zaehler == 131)
        {
            return Color.red;
        }
        else if (zaehler == 132)
        {
            return Color.blue;
        }
        else if (zaehler == 133)
        {
            return Color.red;
        }
        else if (zaehler == 134)
        {
            return Color.yellow;
        }
        else if (zaehler == 135)
        {
            return Color.pink;
        }
        else if (zaehler == 136)
        {
            return Color.blue;
        }
        else if (zaehler == 137)
        {
            return Color.red;
        }
        else if (zaehler == 138)
        {
            return Color.orange;
        }
        else if (zaehler == 139)
        {
            return Color.magenta;
        }
        else if (zaehler == 140)
        {
            return Color.GREEN;
        }
        else if (zaehler == 141)
        {
            return Color.red;
        }
        else if (zaehler == 142)
        {
            return Color.green;
        }
        else if (zaehler == 143)
        {
            return Color.red;
        }
        else if (zaehler == 144)
        {
            return Color.yellow;
        }
        else if (zaehler == 145)
        {
            return Color.red;
        }
        else if (zaehler == 146)
        {
            return Color.blue;
        }
        else if (zaehler == 147)
        {
            return Color.red;
        }
        else if (zaehler == 148)
        {
            return Color.orange;
        }
        else if (zaehler == 149)
        {
            return Color.yellow;
        }
        else if (zaehler == 150)
        {
            return Color.PINK;
        }
        else if (zaehler == 151)
        {
            return Color.red;
        }
        else if (zaehler == 152)
        {
            return Color.green;
        }
        else if (zaehler == 153)
        {
            return Color.lightGray;
        }
        else if (zaehler == 154)
        {
            return Color.yellow;
        }
        else if (zaehler == 155)
        {
            return Color.red;
        }
        else if (zaehler == 156)
        {
            return Color.blue;
        }
        else if (zaehler == 157)
        {
            return Color.red;
        }
        else if (zaehler == 158)
        {
            return Color.orange;
        }
        else if (zaehler == 159)
        {
            return Color.red;
        }
        else if (zaehler == 160)
        {
            return Color.pink;
        }
        else if (zaehler == 161)
        {
            return Color.red;
        }
        else if (zaehler == 162)
        {
            return Color.orange;
        }
        else if (zaehler == 163)
        {
            return Color.red;
        }
        else if (zaehler == 164)
        {
            return Color.yellow;
        }
        else if (zaehler == 165)
        {
            return Color.red;
        }
        else if (zaehler == 166)
        {
            return Color.blue;
        }
        else if (zaehler == 167)
        {
            return Color.yellow;
        }
        else if (zaehler == 168)
        {
            return Color.orange;
        }
        else if (zaehler == 169)
        {
            return Color.red;
        }
        else if (zaehler == 170)
        {
            return Color.green;
        }
        else if (zaehler == 171)
        {
            return Color.red;
        }
        else if (zaehler == 172)
        {
            return Color.green;
        }
        else if (zaehler == 173)
        {
            return Color.red;
        }
        else if (zaehler == 174)
        {
            return Color.yellow;
        }
        else if (zaehler == 175)
        {
            return Color.red;
        }
        else if (zaehler == 176)
        {
            return Color.blue;
        }
        else if (zaehler == 177)
        {
            return Color.red;
        }
        else if (zaehler == 178)
        {
            return Color.orange;
        }
        else if (zaehler == 179)
        {
            return Color.red;
        }
        else if (zaehler == 180)
        {
            return Color.darkGray;
        }
        else if (zaehler == 181)
        {
            return Color.red;
        }
        else if (zaehler == 182)
        {
            return Color.pink;
        }
        else if (zaehler == 183)
        {
            return Color.red;
        }
        else if (zaehler == 184)
        {
            return Color.green;
        }
        else if (zaehler == 185)
        {
            return Color.magenta;
        }
        else if (zaehler == 186)
        {
            return Color.blue;
        }
        else if (zaehler == 187)
        {
            return Color.red;
        }
        else if (zaehler == 188)
        {
            return Color.orange;
        }
        else if (zaehler == 189)
        {
            return Color.green;
        }
        else if (zaehler == 190)
        {
            return Color.LIGHT_GRAY;
        }
        else if (zaehler == 191)
        {
            return Color.red;
        }
        else if (zaehler == 192)
        {
            return Color.blue;
        }
        else if (zaehler == 193)
        {
            return Color.red;
        }
        else if (zaehler == 194)
        {
            return Color.yellow;
        }
        else if (zaehler == 195)
        {
            return Color.red;
        }
        else if (zaehler == 196)
        {
            return Color.blue;
        }
        else if (zaehler == 197)
        {
            return Color.red;
        }
        else if (zaehler == 198)
        {
            return Color.orange;
        }
        else if (zaehler == 199)
        {
            return Color.red;
        }
        return Color.yellow;
    }
}
 
das problem liegt daran das die methode
Java:
public boolean mouseUp(Event e, int x, int y){...}
deprecated also veraltet ist und von swing anscheinend nicht mehr unterstützt wird. Wenn du stattdessen einen MouseListener verwendest funzt es.
die mouseUp methode löschen und folgenden code in den construktor:

Java:
addMouseListener(new MouseAdapter(){
	  @Override
	  public void mouseClicked(MouseEvent e){
	        double width = getSize().width;
	        double height = getSize().height;
	            
	        double qa = e.getX() / width;
	        double da = amax - amin;
	        double a = amin + da * qa;
					
	        double qb = e.getY() / height;
	        double db = bmax - bmin;
	        double b = bmin + db * qb;

		if(e.getButton() == MouseEvent.BUTTON1){
			// neuer Bereich ist nur halb so groß
			da = da / 2;
			amin = a - da / 2;
			amax = a + da / 2;

			db = db / 2;
			bmin = b - db / 2;
			bmax = b + db / 2;
		}
		if(e.getButton() == MouseEvent.BUTTON3){
			// neuer Bereich ist doppelt so groß
			da = da / 2;
			amin = a - da * 2;
			amax = a + da * 2;

			db = db / 2;
			bmin = b - db * 2;
			bmax = b + b*2; 							
		}
		if(e.getButton() == MouseEvent.BUTTON2){
			// neuer Bereich ist ? so groß
			da = da / 2;
			amin = a - da;
			amax = a + da;

			db = db / 2;
			bmin = b - db;
			bmax = b +db;								
		}
		repaint();
	}
});

Anmerkung:
in der main methode sollte eigentlich nur
new Mandelbrotmenge();
stehen der rest gehört in den construktor wobei setVisible() als letztes aufgerufen werden sollte
setSize(left, top); und setLocation(900,900); kannst du auch noch zu setBounds(left, top, 900, 900); zusammenfassen
dessweiteren sollte eigentlich in der paint / paintComponent methode nur gezeichnet werden und keine logik abgearbeitet weden
aber du hast ja selbst gesagt das du noch totaler anfänger bist also ist das noch verzeihbar 😉

edit: vllt. noch den weißen rand oben entfernen schließlich wird es jetzt auf dem JPanel und nicht mehr auf einem frame gezeichnet, es wird also nix mehr durch den Balken verdeckt 😉
 
Super 🙂 funktioniert alles wieder
ich glaube jetzt kann ich das thema auch endlich schließen, habe keine Probleme mehr

Und danke nochmal für deine Hilfe 😉
 
das problem liegt daran das die methode
Java:
public boolean mouseUp(Event e, int x, int y){...}
deprecated also veraltet ist und von swing anscheinend nicht mehr unterstützt wird.

:shock:

deprecated bedeutet doch nicht, daß sie durch Swing nicht mehr aufgerufen wird.

Oder verstehe ich da jetzt etwas fallig völsch? ???:L
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben