# Java Frame per X schließen?



## Arvid (8. Jul 2009)

Guten Tag,

ich versuche gerade den Frame in meinem kleinen Java Programm schließen zu können ohne immer bei eclipse auf den "stop" button klicken zu müssen.
Allerdings hab ich keine Ahnung wie das geht, obwohl ich mir schon einigen Foren-threads durchgelesen habe.
ich hab zwar noch ein anderes Programm da funktioniert das Schließen per mausklick auf X aber das ist ein JFrame und bei dem programm hier habe ich einen Frame und da kommt dann eine Fehlermeldung wenn ichs auf diese weise versuche.

Danke schonmal für eure Hilfe 

Grüße Arvid


----------



## diel2001 (8. Jul 2009)

```
<JFrame>.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
```

Bitte schön


----------



## SlaterB (8. Jul 2009)

bei einem AWT-Frame:
Das Abstract Windowing Toolkit (AWT)


----------



## Meru (8. Jul 2009)

```
public class TestFrame extends Frame {

	public TestFrame() {
		this.setSize(100, 100);
		this.add(new Label("Hallo"));
		this.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		this.setVisible(true);
	}
	
	
	
	public static void main(String args[]){
		new TestFrame();
	}
}
```


edit:
war wohl zu langsam


----------



## Arvid (8. Jul 2009)

hmm, danke aber das ist ja genau so wie es beim JFrame funktioniert und beim Frame nicht.
Ich weiß zwar auch nicht was der unterschied zwischen JFrame und Frame ist außer dass bei Frame auf diese Art nur eine Fehlermeldung kommt und der Vorschlag "Create method 'setDefaultCloseOperation(int)" erscheint.
Aber ich hab keine Ahnung was ich jetzt mit der Methode anfangen soll?!? bin noch totaler anfänger bei Java!


----------



## Chumax (8. Jul 2009)

SlaterB hat gesagt.:


> bei einem AWT-Frame:
> Das Abstract Windowing Toolkit (AWT)



Da steht das für Frame drin!


----------



## Arvid (8. Jul 2009)

ah ok danke ich versuchs mal so, hier ist mal das programm um das es geht, ist allerdings fast zur hälfte aus beispiel-quellcodes zusammengefügt ^^
hier wird ja so schnell geantwortet dass bereits ne neue antwort da ist bevor ich meine absende 



```
currentPost.edit(package de.straube.Tests;


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

import javax.swing.WindowConstants;

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);
    }

    Mandelbrotmenge()
    {
        super("Mandelbrotmenge");
        setSize(800, 800);
    }


    public boolean mouseUp(Event e, int x, int y)
    {
        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());
        System.out.println(counter = counter + 1);
        System.out.println("amin: " + amin);
        System.out.println("amax: " + amax);
        System.out.println("bmin: " + bmin);
        System.out.println("bmax: " + bmax);

        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;
    }
}
```


----------



## Arvid (8. Jul 2009)

danekschön, problem gelöst so schnell kanns gehn!
habs jetzt so wie auf der seite Das Abstract Windowing Toolkit (AWT) gemacht 

komisch nur dass ich das bei dem ganzen rumgoogeln nicht gefunden hab ^^

naja danke euch allen

MfG Arvid


----------

