# Exception warum?



## JimCrackma (26. Okt 2019)

Hallo,
hab noch nicht viel mit Java gemacht und wollte erstmal ein kleines Tutorial probieren.
Soweit so gut. Paar variablen, paar Klassen definiert. Alles verständlich, bis auf paar import Funktionen.
Nun bekomme ich beim Ausführen folgendes Problem.



```
Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container
    at java.awt.Container.checkNotAWindow(Container.java:492)
    at java.awt.Container.addImpl(Container.java:1093)
    at java.awt.Container.add(Container.java:419)
    at pack1.Gui.<init>(Gui.java:20)
    at pack1.main.main(main.java:6)
```

um was gehts hier? Seltsam finde ich auch, dass es keinerlei Verweis auf die Fehlerhafte Stelle im Code gibt.

Kann wer helfen?

Danke


----------



## thecain (26. Okt 2019)

JimCrackma hat gesagt.:


> pack1.Gui.<init>(Gui.java:20)


ist doch ein guter Verweis


----------



## JimCrackma (26. Okt 2019)

thecain hat gesagt.:


> ist doch ein guter Verweis


stimmt. Hab ich nicht richtig gelesen.

Dann hier mal der Code...


```
package pack1;
import javax.swing.JFrame;


public class Gui {

    public Gui() {
        Var.jf1 =new JFrame();
        Var.jf1.setSize(Var.screen_with , Var.screen_height);
        Var.jf1.setLocationRelativeTo(null);
        Var.jf1.setLayout(null);
        Var.jf1.setTitle("Supercooles Spiel");
        Var.jf1.requestFocus();
        Var.jf1.setResizable(false);
        Var.jf1.setVisible(true);
    
    
        Var.lbl1 = new label();
        Var.lbl1.setBounds(0, 0, Var.screen_with, Var.screen_height);
        Var.lbl1.add(Var.jf1);
    }
}
```

label

```
package pack1;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;

import javax.swing.JLabel;

public class label extends JLabel {
    private static final long serialVersionUID = 1L;

    public void paintComponents(Graphics g) {
        super.paintComponents(g);
        Graphics2D g2d = (Graphics2D) g;
     
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g.drawImage(Var.bg1, 0, Var.backgroundY1, 800, 600, null );
        g.drawImage(Var.bg2, 0, Var.backgroundY2, 800, 600, null );
    }
}
```

liegt es vllt an dem *public void paintComponents(Graphics g)*? Im Tutorial ist es eigentlich als protected deklariert, aber die IDE meckert ich solle es zu public ändern. Wenn ich die Zeile auskommentiere, wirft es keinen Fehler -> lädt aber auch kein Bild.

Edit: Natürlich müssen die Parameter für das hinzufügen verdreht werden!! -> lädt aber immernoch auch kein Bild.


----------



## Xyz1 (26. Okt 2019)

JimCrackma hat gesagt.:


> Var.lbl1.add(Var.jf1);


Ich glaub das muss Var.jf1.add(Var.lbl1); heißen.


----------



## thecain (26. Okt 2019)

Ich würde auch mal das Tutorial wechseln, ist ja schrecklich...


----------



## Xyz1 (26. Okt 2019)

thecain hat gesagt.:


> ist ja schrecklich


dafür kann er doch nichts....


----------



## thecain (26. Okt 2019)

Für die Auswahl davon ja schon, bzw er kann ein anderes nehmen. Zum Lernen ist es auf jeden Fall ungeeignet


----------



## JimCrackma (26. Okt 2019)

@Tobias-nrw Das habe ich schon verändert. siehe edit. aber danke trotzdem.
@thecain  Hast du eins inpetto?


----------



## thecain (26. Okt 2019)

Um was soll es gehen?


----------



## Xyz1 (26. Okt 2019)

JimCrackma hat gesagt.:


> Das habe ich schon verändert. siehe edit. aber danke trotzdem


Naja, das behebt die Fehlermeldung und von "Bild wird nicht dargestellt" weiß ich nichts.


----------



## Xyz1 (26. Okt 2019)

JimCrackma hat gesagt.:


> Hast du eins inpetto


Wenn Du den Nerv dazu hast, kannst Du Dir https://jaxenter.de/java-kurs-teil-4-50420 antun...


----------



## JimCrackma (26. Okt 2019)

@Tobias-nrw danke dafür. Das Bild lädt es scheinbar nicht, da die Koordinaten bei g.drawImage falsch gesetzt sind.
@thecain  grafische/ Spiele Programmierung wär cool.


----------



## Xyz1 (26. Okt 2019)

Oder Du pickst Dir hier eins raus: https://www.geeksforgeeks.org/tag/java-swing/


----------



## JimCrackma (26. Okt 2019)

@Tobias-nrw @thecain  Okay Danke euch beiden. 
Ich schau mir's mal an. Werd mir aber trotzdem noch einen Kopf machen, weshalb die doofe protected Klasse nicht aktzeptiert wird und die Bilder nicht geladen werden.


----------



## Robat (27. Okt 2019)

Das mit der Spieleprogrammierung solltest du definitiv lassen. Bevor man mit gui Programmierung anfängt sollte man die Java Basics verstanden haben und von selber merken, dass diese Tutotial, was leider immer noch im Netz seinen Lauf nimmt, ungeeignet ist (ums mal nett auszudrücken). 
Also liebt gemeinter Tipp: GUI weglegen, Grundlagenbuch (oder Tutorial) hernehmen und anfangen zu lernen und zu verstehen


----------

