Exception: illegal component position

Status
Nicht offen für weitere Antworten.

hyperion

Bekanntes Mitglied
Hallo,

mein Programm soll wenn es fertig ist ungefähr so aussehen: Bild vom Programm

Im Moment funktioniert leider nicht viel. Ausgegeben wird ein Fenster welches nur aus einer Schließen-, Maximieren- und einer Minimierenbox besteht. Als Fehler bekomme ich: "illegal component position ".

Der Code schaut wie folgt aus (Den meiner Meinung nach für den Fehler relevanten Code habe ich rot markiert, der Fehler kann natürlich auch woanders liegen.):

Code:
package weltsimulation;

//Verwendete Packete.
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;

public class Weltbauer extends JFrame {
        
//Instanzvariablen der Klasse Main.
    JPanel JPanel_Ueberschrift, JPanel_Center, JPanel_unten, JPanel_Rahmen;
    JPanel JPanel_Tab1, JPanel_Tab2, JPanel_Tab3;
    JLabel JLabel_Ueberschrift, JLabel_Status;
    JTabbedPane JTabbedPane_Tabfenster;
    int Aufloesungx = 1024;
    int Aufloesungy = 860;
    
//Konstruktoren.
    Weltbauer() 
    {
        
        //Eigenschaften der Weltbauerinstanz setzen.
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        setResizable(false);
        setLocationByPlatform(true);
        setPreferredSize(new Dimension(Aufloesungx, Aufloesungy));
        getContentPane().setBackground(Color.white); 
        
        
//Komponenten mit Eigenschaften erstellen.
        
        //Äußerster Rahmen innerhalb des JFrames.
        //Rahmenstärke: 2 Rahmenfarbe: Rot.
        //Hintergrundfarbe: Weis.
        //Bevorzugte Größe: Maximalwert minus 100.
        //===>Überall 50 Abstand zum Ende des GUI.
        JPanel_Rahmen = new JPanel();
        JPanel_Rahmen.setBorder(new LineBorder(Color.RED, 2));
        JPanel_Rahmen.setBackground(Color.white);
        JPanel_Rahmen.setPreferredSize(
            new Dimension(
                (int)JPanel_Rahmen.getMaximumSize().getWidth() - 100, 
                (int)JPanel_Rahmen.getMaximumSize().getHeight() - 100));
             
        
            //Oberer Rahmen.
            //Rahmenstärke: 2 Rahmenfarbe: Blau.
            //Hintergrundfarbe: Weis.
            //Bevorzugte Breite: Breite von JPanel_Rahmen.
            //Bevorzugte Höhe: 30.
            JPanel_Ueberschrift = new JPanel();        
            JPanel_Ueberschrift.setBorder(new LineBorder(Color.blue, 2));
            JPanel_Ueberschrift.setBackground(Color.white);
            JPanel_Ueberschrift.setPreferredSize(new Dimension
                                                (JPanel_Rahmen.getWidth() - 10, 30));
            
                //Überschrift: "Überschrift".
                //Hintergrundfarbe: Weis.
                JLabel_Ueberschrift = new JLabel("Überschrift");
                JLabel_Ueberschrift.setBackground(Color.white);
            
            //Mittlerer Rahmen.  
            //Rahmenstärke: 2 Rahmenfarbe: Blau.
            //Hintergrundfarbe: Weis.
            //Bevorzugte Größe: maximale Größe.
            JPanel_Center = new JPanel();
            JPanel_Center.setBorder(new LineBorder(Color.blue, 2));
            JPanel_Center.setBackground(Color.white);
            JPanel_Center.setPreferredSize(JPanel_Center.getMaximumSize());
            
                //TabbedPane.
                //Hintergrundfarbe: Weis.                
                JTabbedPane_Tabfenster = new JTabbedPane();
                JTabbedPane_Tabfenster.setBackground(Color.white);

                    //Tab1.
                    //Hintergrundfarbe: Weis.
                    //Bevorzugte Größe: maximale Größe.
                    JPanel_Tab1 = new JPanel();
                    JPanel_Tab1.setBackground(Color.white);
                    JPanel_Tab1.setPreferredSize(getMaximumSize());

                    //Tab2.
                    //Hintergrundfarbe: Weis.
                    //Bevorzugte Größe: maximale Größe.                    
                    JPanel_Tab2 = new JPanel();
                    JPanel_Tab2.setBackground(Color.white);
                    JPanel_Tab2.setPreferredSize(getMaximumSize());

                    //Tab3.
                    //Hintergrundfarbe: Weis.
                    //Bevorzugte Größe: maximale Größe.                    
                    JPanel_Tab3 = new JPanel();
                    JPanel_Tab3.setBackground(Color.white);
                    JPanel_Tab3.setPreferredSize(getMaximumSize());                    

            //Unterer Rahmen.
            //Rahmenstäke: 2, Rahmefarbe: Blau.
            //Hintergrundfarbe: Weis.
            //Bevorzugte Breite: Breite von JPanel_Rahmen.
            //Bevorzugte Höhe: 30.            
            JPanel_unten = new JPanel();
            JPanel_unten.setBorder(new LineBorder(Color.blue, 2));
            JPanel_unten.setBackground(Color.white); 
            JPanel_unten.setPreferredSize(new Dimension
                                                (JPanel_Rahmen.getWidth(), 30));
                       
                //Status: "Test Status".
                //Hintergrundfarbe: Weis.
                JLabel_Status = new JLabel("Test Status");
                JLabel_Status.setBackground(Color.white);                                
            
  ////////////////////////////////////////////////////////////////////////              
             
  //Layout der Komponenten bestimmen und Komponenten zuweisen.              
                    
            JPanel_Ueberschrift.setLayout(new FlowLayout());    
            JPanel_Ueberschrift.add(JLabel_Ueberschrift, FlowLayout.LEFT); 
            
            JTabbedPane_Tabfenster.add("Allgemeines", JPanel_Tab1);
            JTabbedPane_Tabfenster.add("inaktive Komponenten", JPanel_Tab2);
            JTabbedPane_Tabfenster.add("aktive Komponenten", JPanel_Tab3);
            
            JPanel_Center.setLayout(new BorderLayout());
            JPanel_Center.add(JTabbedPane_Tabfenster, BorderLayout.CENTER); 
            
            JPanel_unten.setLayout(new FlowLayout());
            JPanel_unten.add(JLabel_Status, FlowLayout.LEFT);
            
            JPanel_Rahmen.setLayout(new BorderLayout());
            JPanel_Rahmen.add(JPanel_Ueberschrift, BorderLayout.NORTH);            
            JPanel_Rahmen.add(JPanel_Center, BorderLayout.CENTER);
            JPanel_Rahmen.add(JPanel_unten, BorderLayout.SOUTH);
            
            setLayout(new BorderLayout());
            getContentPane().add(JPanel_Rahmen, BorderLayout.CENTER);
            pack();
    }

    public static void main(String[] args) 
    {
       new Weltbauer();
    }

    public void actionPerformed(ActionEvent event) 
    {
        Welt Erde = new Welt("Erde", 800, 600, Color.CYAN);
    }
}

Bin für jede Hilfe und auch für jeden Tipp abseits der Fragestellung dankbar. Achja die Frage ist natürlich wo der Fehler liegt und wie ich ihn aus meinem Programm entfernen kann.

mfg hyperion
 

Marco13

Top Contributor
Puh. zum Glück nur ein Weltbauer. Ein Universumbauer hätte aufwändig werden können :D

Wenn du nicht so auf pixelgenaue Angaben wert legen würdest, könnte man das (vermutlich!) einfacher machen. Und die ganzen Panels brauchst du ja nur für's Layout - die bräuchten also nicht als Instanzvariablen da rumzuliegen. Und .. in bezug auf die Namen: Variablennamen sollten kleingeschrieben sein, keine Unter_striche enthalten, und sprechend sein - statt Namen wie "JPanel_unten" wäre also sowas wie "statusbarPanel" oder so evtl. besser geeignet.

Wie auch immer. Wenn diese Exception fliegt, dann erscheint ja ein "StackTrace". Den solltest du auf jeden Fall posten, und dazusagen, in welcher Zeile deines Programmes er auftritt. Beim ersten Überfliegen sieht

JPanel_unten.setLayout(new FlowLayout());
JPanel_unten.add(JLabel_Status, FlowLayout.LEFT);

komisch aus - das FlowLayout kreigt glaubich garkeine Constraints. Schau mal nach, ob das nicht

JPanel_unten.setLayout(new FlowLayout(FlowLayout.LEFT));
JPanel_unten.add(JLabel_Status);

heißen müßte...
 

hyperion

Bekanntes Mitglied
Hi,

also erst einmal danke für die Antwort und die Tipps abseits der Fragestellung;)

Funktioniert leider auch mit der angegebenen Änderung nicht. Ehrlich gesagt weiß ich auch nicht was ein Stacktrace ist, aber ich glaube du würdest gerne die gesamte Fehlermeldung sehen.

init:
deps-jar:
Warning: weltsimulation\Boden.java modified in the future.
Warning: weltsimulation\Welt.java modified in the future.
Warning: modified in the future.
Warning: weltsimulation modified in the future.
compile:
run:
Exception in thread "main" java.lang.IllegalArgumentException: illegal component position
at java.awt.Container.addImpl(Container.java:1011)
at java.awt.Container.add(Container.java:395)
at weltsimulation.Weltbauer.<init>(Weltbauer.java:31)
at weltsimulation.Weltbauer.main(Weltbauer.java:98)
BUILD SUCCESSFUL (total time: 3 seconds)


Zu "modified in the future" muss ich sagen, dass ich vor kurzem die Uhr verändert hab, die stand nämlich haus irgendeinem Grund schon auf Dezember.

mfg hyperion
 
G

Gast2

Gast
Moin,

hyperion hat gesagt.:
Ehrlich gesagt weiß ich auch nicht was ein Stacktrace ist, aber ich glaube du würdest gerne die gesamte Fehlermeldung sehen.

na dieses hier

Code:
Exception in thread "main" java.lang.IllegalArgumentException: illegal component position
        at java.awt.Container.addImpl(Container.java:1011)
        at java.awt.Container.add(Container.java:395)
        at weltsimulation.Weltbauer.<init>(Weltbauer.java:31)
        at weltsimulation.Weltbauer.main(Weltbauer.java:98)

quasi der Programmablauf ... das liest Du von unten nach oben ... Angefangen in main - dort einen Konstruktor aufgerufen (<init>) ... der Ruft irgendwo bei einem Container add ... der scheint intern addImpl aufzurufen ... und hier läuft was schief

Zu "modified in the future" muss ich sagen, dass ich vor kurzem die Uhr verändert hab, die stand nämlich haus irgendeinem Grund schon auf Dezember.

nur gut das ich nicht ganz Paranoid bin ... aber dann erstelle mal alle Klassen nochmal neu ... Warnungen sollte man immer wie Fehler behandeln

hand, mogel
 

hyperion

Bekanntes Mitglied
Hallo,

gut sämtliche Fehlermeldungen kamen nachdem ich das Projekt neu erstellt habe nicht mehr, allerdings passiert jetzt gar nichts mehr.

init:
deps-jar:
compile-single:
run-single:
BUILD STOPPED (total time: 1 minute 4 seconds)

Hmm funktioniert die Klasse denn bei euch? Vielleicht liegt es ja an meinem System. Wobei ich bei einer anderen Anwendung auch ein GUI erstelle auf die gleiche Art und da funktioniert alles ohne Probleme.

mfg hyperion
 

Landei

Top Contributor
Muss das wirklich pixelgenau sein?

Dein Entwurf sieht mächtig nach BorderLayout aus, was im JFrame.getContentPane schon voreingestellt ist.

Mach einen Panel (oder eine vertikale Box) für die Überschrift, adde ihn mit getContentPane.add(northPanel, BorderLayout.NORTH),
Das gleiche für den Süden mit dem Status. Und in die Mitte dann die TabbedPane, die sich immer so groß macht wie möglich. Randabstände lassen sich dann immer noch setzen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
W Null-Pointer Exception beim Programmstart Java Basics - Anfänger-Themen 8
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
Fiedelbambu Exception in Application constructor Java Basics - Anfänger-Themen 3
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
S JavaKara Null Exception Error Java Basics - Anfänger-Themen 4
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
LiFunk Exception: es dürfen nur Nummern eingelesen werden Java Basics - Anfänger-Themen 6
low_in_the_head Eigene Exception nutzen Java Basics - Anfänger-Themen 4
1 Exception Java Basics - Anfänger-Themen 2
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
I JAX-RS Exception Handling Java Basics - Anfänger-Themen 4
L Meine erste eigene Exception Klasse Java Basics - Anfänger-Themen 10
J null exception Array Java Basics - Anfänger-Themen 5
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
C Exception-Frage Java Basics - Anfänger-Themen 3
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
I Exception bei Button mit wait() und notifyAll() Java Basics - Anfänger-Themen 3
N Wie teste ich eine geworfene Exception? Java Basics - Anfänger-Themen 8
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
D Scanner- Exception NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception werfen bei falscher Datumseingabe Java Basics - Anfänger-Themen 14
A Exception handeling mit finally und objektreferenzen Java Basics - Anfänger-Themen 6
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
S Exception Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
OSchriever Exception für Abbrechen-Schaltfläche JOptionpane Java Basics - Anfänger-Themen 9
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
J Exception unreachable Java Basics - Anfänger-Themen 12
O unchecked Exception Java Basics - Anfänger-Themen 4
P Exception werfen Java Basics - Anfänger-Themen 15
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
S Exception bei Verwendung von LocalDate Java Basics - Anfänger-Themen 19
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
D Warum die Nullpointer Exception Java Basics - Anfänger-Themen 6
O Exception behandlung einfach Ueben mit Fakt! Java Basics - Anfänger-Themen 10
I OOP Was ist die "Exception Hierarchie" ? Java Basics - Anfänger-Themen 3
U Null Exception aber keine Ahnung warum Java Basics - Anfänger-Themen 5
G Exception und Ausgabe der Duplikate Java Basics - Anfänger-Themen 6
H Try Catch Throw Exception Java Basics - Anfänger-Themen 1
W Exception in Main abfangen oder in der Methode? Java Basics - Anfänger-Themen 10
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
Mosquera Exception Java Basics - Anfänger-Themen 5
M rekursive division/0 mit exception Java Basics - Anfänger-Themen 18
N Nullpointer exception Java Basics - Anfänger-Themen 4
L Eigene Exception schreiben bei zu langem Array Java Basics - Anfänger-Themen 10
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
S Array Grenzen-Exception Java Basics - Anfänger-Themen 11
E InputStream im Servlet wirft Exception Java Basics - Anfänger-Themen 5
D Erste Schritte Java.lang.NullPointer.Exception Java Basics - Anfänger-Themen 8
G Arrays out of Bounds exception Java Basics - Anfänger-Themen 2
H Compiler-Fehler Out of Bunce Exception bei einem Char Java Basics - Anfänger-Themen 6
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
C Null Pointer Exception Java Basics - Anfänger-Themen 10
F Klassen Eigene Exception Bedingungen festlegen Java Basics - Anfänger-Themen 2
G Null Pointer Exception Java Basics - Anfänger-Themen 4
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
O Exception bei Parse-Vorgang Java Basics - Anfänger-Themen 17
T Exception Problem Java Basics - Anfänger-Themen 5
Z Getter/Setter NullPointer Exception Java Basics - Anfänger-Themen 6
W Nullpointer Exception bei .add(...) Java Basics - Anfänger-Themen 6
L Input/Output InputMismatch.Exception Java Basics - Anfänger-Themen 7
B Exception Liste von Liste Java Basics - Anfänger-Themen 3
D Throw Exception Java Basics - Anfänger-Themen 2
MiMa JavaDoc Exception @throws schlagen an Java Basics - Anfänger-Themen 4
J Exception in thread "main" Java Basics - Anfänger-Themen 1
B Exception richtig einbinden Java Basics - Anfänger-Themen 1
M Exception soll Werte mitgeliefert bekommen Java Basics - Anfänger-Themen 12
M Selbstdefinierte Exception Java Basics - Anfänger-Themen 5
B Exception Throwable Java Basics - Anfänger-Themen 11
M Erste Schritte Start Methode - Exception Java Basics - Anfänger-Themen 1
F Operatoren Wieso fliegt hier eine NullPointer Exception :( Java Basics - Anfänger-Themen 3
F nullpointer exception - arrayerstellung Java Basics - Anfänger-Themen 4
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
H Erste Schritte Exception: 0 Java Basics - Anfänger-Themen 2
A Exception vs. Testklasse (Programm testen) Java Basics - Anfänger-Themen 2
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
K Exception nur im "Debug"-Modus und jedem 3.-5. mal Ausführen Java Basics - Anfänger-Themen 3
S Java memory fehler: Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spa Java Basics - Anfänger-Themen 5
L [JFrame] Exception - woher? Java Basics - Anfänger-Themen 8
N Threads Exception in thread "main"... Feher bei dem Versuch ein Radius zu berechnen Java Basics - Anfänger-Themen 4
R "Missbrauch" von Exception zum Programmfluss Java Basics - Anfänger-Themen 1
U Exception: OutOfMemoryError Java Basics - Anfänger-Themen 11
A Int Eingabe: String mit Exception abfangen. Aber wie? Java Basics - Anfänger-Themen 3
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11
V Threads Exception in Thread behandeln Java Basics - Anfänger-Themen 3
F Java exception bei der Ausführung Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben