AWT no such child Exception

Diskutiere no such child Exception im AWT, Swing, JavaFX & SWT Bereich.
R

realodds

Hallo,
in einem größeren Projekt habe ich bei einer methode die oben stehende excpection. Das programm läuft zwar genau wie es soll, dennoch ist die exception (1 mal nur) da. Try/catch klappt auch nicht.
Java:
public class graphic extends JFrame{
        public void disableAll() {
        try {
            if (this.isAncestorOf(muteTextField))
                this.remove(muteTextField);
            if (this.isAncestorOf(liveDisplay))
                this.remove(liveDisplay);
            if (this.isAncestorOf(scoreDisplay))
                this.remove(scoreDisplay);
            if (this.isAncestorOf(highscoreDisplay))
                this.remove(highscoreDisplay);
            if (this.isAncestorOf(menuMessage))
                this.remove(menuMessage);
            for (JTextField timeDisplay1 : timeDisplay) {
                if (this.isAncestorOf(timeDisplay1))
                    this.remove(timeDisplay1);
            }
            for (JTextField text : textfieldList) {
                if (this.isAncestorOf(text))
                    this.remove(text);
            }
        } catch (Exception e) {
            System.out.println("ERROR");
        }
        restartMessge.setVisible(true);
    }
}
 
L

LimDul

R

realodds

Ich glaube nicht, dass das an der getParent() methode liegt, da ohne der Fehlercode auch auf kommt. Un ich hab ehrlich gesagt keine Ahnung in welcher von diesen Zeilen, im Debug wirft es die Exception gar nicht
 
J

JustNobody

Bitte gib den genauen Stacktrace / genaue Fehlermeldung und dann auch die relevanten Codeabschnitte. Zumindest sollten wir wissen, wie die Variablen auch initialisiert wurden und so ...
 
R

realodds

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: No such child: 22
at java.awt.Container.getComponent(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager$4.run(Unknown Source)
at javax.swing.RepaintManager$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.access$1200(Unknown Source)
at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

public JTextField muteTextField = new JTextField(), liveDisplay = new JTextField(),
scoreDisplay = new JTextField(), highscoreDisplay = new JTextField(),
menuMessage = new JTextField(), shieldMessage = new JTextField(),
laserrateMessage = new JTextField(),
laserdmgMessage = new JTextField(), resumeMessage = new JTextField(),
exitMessage = new JTextField(), noMeteorforMinuteMessage = new JTextField(),
noMoneyMessage = new JTextField(), restartMessge = new JTextField();
List<JTextField> textFieldList = new ArrayList<JTextField>();
textFieldList.add(menuMessage);

Danke für das Bemühen :)
 
J

JustNobody

Nutzt Du in Deiner Applikation noch weitere Threads? Vermutlich veränderst Du swing Controls außerhalb des UI Threads.

Wenn Du aus einem anderen Thread als dem UI Thread Controls ändern willst, so kann dies zu Problemen führen. Lösung ist, entweder Swing Mittel Nutzen, die gewisse Dinge im UI Thread machen (Swing Timer, Swing Worker, ..) oder eben im anderen Thread invokeLater nutzen (siehe z.B. https://www.javamex.com/tutorials/threads/invokelater.shtml)
 
Thema: 

no such child Exception

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben