Unfassbarer Fehler. Brauche Ideen zum Debuggen

Thallius

Top Contributor
Hallo,

ich habe eine extrem große umd komplexe Applikation in der ein Fehler auftaucht den ich einfach nicht zu fassen bekomme. Schreibe ich eine Test-Applikation mit minimalem Code tritt bei gleichem Code der Fehler nicht auf.

Ich versuche das Ganze so gut es geht zu beschreiben aber es ist nicht einfach und MB von Code würden sicher auch nicht helfen.

Ich öffne ein Panel mit einer JTable. Alles soweit standard Zeug. Unter dem ScrollPane in dem die JTable ist ist ein weiteres Panel welches ein Label enthält das den Table Status anzeigt (Also zum beispiel "15 / 200 Jobs" je nach Filtereinstellungen). Links vom den ScrollPane ist ein weiteres Panel welches die Filterelemente für die Tabelle beinhaltet. Also DropDownMenus, Checkmarks und Searchfields etc.

Dem TableModel gebe ich nun das Status Label und den Filter mit damit dieses entsprechend die Anzeige machen kann.

Code:
    private ArrayList<MultiJob> joblist;
    public ArrayList<MultiJob> filterList;

    private JLabel countLabel;

    public JobListTableModel(JobsFilter jobfilter, JLabel countlabel) 
    {
        filter = jobfilter;
        filter.addJobsFilterListener(this);
        countLabel = countlabel;

        joblist = new ArrayList<>();
        filterChanged();
    }

Der eigentliche JobListController öffnet einen Langzeit-Requester mit Cancel Button und lädt die Jobs asynchron ein. Wenn der JobLoader die Jobs geladen hat gibt er dem jobController über seine Listener-Funktionen die geladene Liste.
Der Controller öffnet dann das oben beschriebene Panel und setzt die neu geladene Liste.

Code:
    @Override
    public void jobLoaderDidFinish(ArrayList<MultiJob> list)
    {
        if(cancelDialog != null)
            cancelDialog.close();
        cancelDialog = null;

        jobList = list;
        if(jobListPanel == null)
        {
            UserSettings.setSettingsValue("SelectedMainPanelButton", "JobList");
            jobListPanel = new JobListPanel(filter, getLastUpdate());
            jobListPanel.setJobListPanelListener(this);
            mainPanel.openJobListPanel(jobListPanel);
        }
        tableModel.replaceList(jobList);
    }

Das Model setzt dann die Tabelle

Code:
    public boolean replaceList(ArrayList<MultiJob>list)
    {
        joblist = list;
        filterChanged();
        return true;
    }

    public void filterChanged() 
    {
        filterList = new ArrayList<>();
        for(MultiJob entry : joblist)
        {
       .... hier kommen nur die Abfrage ob die Filter greifen oder eben nicht, das hat aber nichts mit der Sache zu tun
            filterList.add(entry);
        }
        System.out.println(joblist.size());

        if(countLabel != null)
            countLabel.setText(filterList.size()+" / "+joblist.size()+" "+"Jobs"); 

        fireTableDataChanged();
    }

Jetzt kommt der eigentlich Spaß. Wenn ich in der Zeile countLabel.setText() das joblist.size() weglasse oder die joblist leer ist (also die size() == 0) oder wenn ich die ganze Zeile ausdokkumentiere, dann wird das Ganze Panel nicht mehr angezeigt. Es gibt keinen Fehler, keine Exception, das Panel bleibt einfach leer.

Ich benutzte das countLabel nirgendwo anders. Es wird nur im Panel erstellt, "Jobs" vorinitialisiert und hier verändert. Sonst keine Besonderheit.

Und um es jetzt ganz verrückt zu machen

Code:
      int g = joblist.size();
      if(countLabel != null)
            countLabel.setText(filterList.size()+" / "+g" "+"Jobs");

funktioniert.

Code:
      int g = joblist.size();
      //if(countLabel != null)
      //      countLabel.setText(filterList.size()+" / "+g" "+"Jobs");

funktioniert nicht.

Lasse ich das panel.add(countLabel) beim Erstellen des Panels weg geht es auch nicht.
Lösche ich das countLabel und alle seine Verweise geht auch nichts.
Ersetze ich das joblist.size() im setText durch eine Konstante oder irgend eine andere Variable geht es auch nicht.

Fazit:
Es muss dieses Label auf dem Panel sein und es muss ein setText(joblist.size()) darauf gemacht werden. Sonst wird das gesammte Panel (Table, Filter, Status) nicht dargestellt.

Ich habe schon den Namen von countLabel händisch geändert (Also ohne Refactoring) um sicher zu gehen das es nicht doch noch eine anderer Referenz darauf gibt aber ist nicht.

Das ist alles komplett unlogisch ...

Ich habe echt keine Idee was ich noch debuggen soll. Ich kann in das Label schreiben was ich will, solange das joblist.size() drin bleibt.

Gruß

Claus
 

mrBrown

Super-Moderator
Mitarbeiter
Ganz spontan würde ich auf ein irgendwo fehlendes repaint(/revalidate/whatever) irgendwo tippen.

Kannst mal versuchsweise 'nen Breakpoint in die setText setzen, und gucken was da passiert.
 

Joose

Top Contributor
Code:
countLabel = countlabel;
Über diese Zeile (im Konstruktor) bin ich gerade gestolpert, dachte du hast dich verschrieben und ein "this." vergessen. Aber die beiden Variablennamen sind ja doch anders :rolleyes: nur sehr schwer erkennbar ;)

In welchem Thread wird denn der Text vom Label gesetzt? Funktioniert die GUI weiterhin (also der Rest) oder ist es dann komplett vorbei?
 

Thallius

Top Contributor
Über diese Zeile (im Konstruktor) bin ich gerade gestolpert, dachte du hast dich verschrieben und ein "this." vergessen. Aber die beiden Variablennamen sind ja doch anders :rolleyes: nur sehr schwer erkennbar ;)

In welchem Thread wird denn der Text vom Label gesetzt? Funktioniert die GUI weiterhin (also der Rest) oder ist es dann komplett vorbei?

Ja ist eine Marotte von mir das ich Übergabe-Parameter immer im lowercase und Instanz-Variablen dann halt im camelCase schreibe. So kann ich die für mich gut unterscheiden und weis doch das sie eigentlich das gleiche beinhalten und zusammen gehören (zumindest in dem Moment :)

Also ich kann mit dem Programm ganz normal weiter arbeiten. Auf andere Panels schalten etc. Nur eben dieses Panel bleibt leer. Es wird nichtmal eine Background Color gesetzt oder sowas. Das Dingen ist einfach weg. Wenn ich im Debug Mode starte und dann die App anhalte steht sie auch sauber im Waiting. Also da ist nichts was abstürzt oder so.

Gruß

Claus
 

Thallius

Top Contributor
Ganz spontan würde ich auf ein irgendwo fehlendes repaint(/revalidate/whatever) irgendwo tippen.

Kannst mal versuchsweise 'nen Breakpoint in die setText setzen, und gucken was da passiert.

Aber warum sollte das repaint nur aufgerufen werden wenn das joblist.size() in dem setText() steht? Dann müßte es ja bei jedem Text getriggert werden.

Gruß

Claus
 

Thallius

Top Contributor
Ok, der Hint war nicht schlecht. Wenn ich statt des setText() ein statusLabel.revalidate() mache dann geht es auch. Was das jetzt damit zu tun hat welchen Text ich in setText() benutze ist mir zwar trotzdem nicht klar aber immerhin ein Ansatz zum weiter suchen.

Gruß

Claus
 

Thallius

Top Contributor
Ok, es fehlte tatsächlich ein revalidate() nach dem Einfügen des neuen Panels. Erklärt immer noch nicht warum der Text im setText() von Bedeutung war aber ist mir jetzt ehrlich gesagt auch sch.... egal.

Danke für alle die sich die Zeit genommen haben zu helfen

Claus
 

mrBrown

Super-Moderator
Mitarbeiter
Das revalidate wird ausgeführt, wenn sich der Text des Labels ändert.
Wenn der restliche Text in dem Label bis auf die Listenlänger immer gleich ist, führt der nicht zu einem Revalidate, sondern nur die variable Länge.
Vermutlich würde das auch mit einem Math.random als Text klappen und mit der Liste hat das nicht viel zu tun ;)
 

JuKu

Top Contributor
Ein Label ohne Text wird glaube nicht angezeigt.
Und ein leeres Panel wird vermutlich auch nicht gerendert.
Vllt. hat das was mit deinem Problem zu tun?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Fehler: <ID> erwartet Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
Pinhg Discord JDA Bot - Fehler Allgemeine Java-Themen 3
KonradN CVE-2022-21449: Fehler in Java bei Signaturprüfung Allgemeine Java-Themen 20
L Fehler mit Boolean. (Glaube ich zumindest) Allgemeine Java-Themen 6
P Selenium Scriipt zeigt Fehler beim Import Allgemeine Java-Themen 3
O Fehler bei Variablen Allgemeine Java-Themen 2
HerrBolte Seltsamer Fehler nur in der Windows- und nicht in der Java-Console O_O Allgemeine Java-Themen 16
M Kein Scanner Fehler durch falsche EIngabe Allgemeine Java-Themen 4
N nicht einsehbarer Fehler im code, kann nicht mehr übersetzten Allgemeine Java-Themen 51
yakazuqi Fehler beim Laden. JDA (Java Discord API) Allgemeine Java-Themen 1
C Fehler bei der Benutzung von itextpdf Allgemeine Java-Themen 1
U Fehler beim Compillieren Allgemeine Java-Themen 13
x46 String Format Fehler Allgemeine Java-Themen 2
bueseb84 Fehler beim Import von Maven Dependencies aus lokalem artifactory Allgemeine Java-Themen 2
MiMa Datei verschieben hat einen Fehler?? Allgemeine Java-Themen 20
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
T Java-Quiz Code Fehler Allgemeine Java-Themen 10
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
T Fehler bei IF abfrage Allgemeine Java-Themen 8
C Fehler beim Debuggen von Listen Allgemeine Java-Themen 4
M Einheitenrechner - Fehler Allgemeine Java-Themen 12
D Erste Schritte Fehler mit negativen und 0 Zahlen im String Allgemeine Java-Themen 6
T Denk-Fehler? Allgemeine Java-Themen 4
A Finde den Fehler nicht. Allgemeine Java-Themen 7
H Class 'java.io.BuferedReader' is not present in JRE Emulation Libary | GWT Fehler?! Allgemeine Java-Themen 0
D Unbekannter Fehler Allgemeine Java-Themen 1
R Fehler im Code Allgemeine Java-Themen 1
R Fehler im Code Allgemeine Java-Themen 3
ReinerCoder Methode einer Klasse meldet Fehler "misplaced construct(s)" Allgemeine Java-Themen 13
R Wo ist mein Fehler in der Methode DRINGEND Allgemeine Java-Themen 9
R Wo ist mein Fehler in diesem Code Allgemeine Java-Themen 7
I Fehler beim Ant-Package erstellen mit Java 9 Allgemeine Java-Themen 1
L Fehler bei der Ausführung einer Jar Allgemeine Java-Themen 2
T OOP Fehler im Design Allgemeine Java-Themen 9
U Eclipse MANIFEST fehler Allgemeine Java-Themen 7
I Fehler bei HashMaps Darstellung Allgemeine Java-Themen 10
R Classnotfoundexception Fehler Allgemeine Java-Themen 3
A Fehler beim Aktualisieren JTable Allgemeine Java-Themen 1
N Compiler-Fehler Warum erhalte ich einen Nullpointer Fehler? Allgemeine Java-Themen 2
N Prim's Algorithm - wo ist der Fehler? Allgemeine Java-Themen 3
J-Gallus Erste Schritte Wahrscheinlich Anfänger Fehler beim rechnen. Falsches Ergebnis. Allgemeine Java-Themen 9
M Line-Fehler Allgemeine Java-Themen 8
U Input/Output Warum wirft mir das Programm diesen Fehler? Allgemeine Java-Themen 6
RalleYTN Merkwürdiger Fehler mit JFrame im Vollbild Allgemeine Java-Themen 4
V AudioInputStream Fehler Allgemeine Java-Themen 1
J Interpreter-Fehler Fehler beim Verschlüsseln Invalid AES key length Allgemeine Java-Themen 1
G Fehler mit Vector Allgemeine Java-Themen 3
F Java Fehler "buildTableModel" Allgemeine Java-Themen 3
F Fehler in Zeile in Log schreiben Allgemeine Java-Themen 6
DanielsLPecke Input/Output Arduino komischer Fehler. Allgemeine Java-Themen 38
V JavaFX Fehler beim Starten einer Jar Allgemeine Java-Themen 7
S Hashtable Fehler Allgemeine Java-Themen 14
S Zwei String vergleichen, Fehler markieren Allgemeine Java-Themen 3
C Hilfe bei einer Fehler meldung Allgemeine Java-Themen 3
K Was ist mein Fehler? Allgemeine Java-Themen 2
Tausendsassa Compiler-Fehler Fertiges Programm mit Fehler Allgemeine Java-Themen 10
B Eclipse Nach Export einer .jar Fehler: Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 5
K Fehler beim erstellen von .jar Datei Allgemeine Java-Themen 3
P Java Fehler auf Win2008 Server java.io.FilePermission IE8 Version JRE 1.7.0_51 Allgemeine Java-Themen 7
M Eclipse - Fehler: Hauptklasse de.xyz.init.MeineKlasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 2
Seikuassi Swing Stehe auf dem Schlauch...(BufferedReader_Writer-Fehler?) Allgemeine Java-Themen 4
M Eclipse Fehler beim Installieren des Plugins "Jigloo" Allgemeine Java-Themen 12
A Eclipse - Fehler beim "RUN" - "Unable to Launch - The selection cannot be launched" Allgemeine Java-Themen 6
B Fehler bei einem Programm Allgemeine Java-Themen 10
F HILFEEEEEE JAVA Fehler - Tiny Umbrella Allgemeine Java-Themen 1
N JavaFX IndexOutOfBounds-Fehler Allgemeine Java-Themen 11
N GPIB - Fehler: Unable to open device Allgemeine Java-Themen 1
S Ganzes Programm "stucked" - JVM-Fehler? Allgemeine Java-Themen 2
D Variablen Ausgabe bzw. einlese Fehler Allgemeine Java-Themen 7
I Fehler java.lang.NullPointerException Allgemeine Java-Themen 5
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
B Eclipse Fehler in eclipse/Java Allgemeine Java-Themen 13
B Fehler beim Auslesen von Einstellungen. Zwei ähnliche Blöcke, nur eins geht. Allgemeine Java-Themen 5
H JUnit Fehler beim Compilieren - erledigt Allgemeine Java-Themen 0
J Fehler beim parsens eine Datums Allgemeine Java-Themen 3
A Thread Fehler absichtlich provozieren Allgemeine Java-Themen 3
J Compiler-Fehler .nextLine fehler Allgemeine Java-Themen 3
B Fehler im Java-Code Allgemeine Java-Themen 4
S Java Fehler bei Konsolenprogramm Allgemeine Java-Themen 2
N Was ist ein Fehler (Requirement-Engineering) Allgemeine Java-Themen 3
C System.out.print("") Compiler Fehler Allgemeine Java-Themen 2
T Programm bleibt ohne Fehler stehen Allgemeine Java-Themen 4
G Fehler beim instanzieren einer Generischen Klasse Allgemeine Java-Themen 5
K Eclipse Fehler beim Ausführen meines Programms in Eclipse Allgemeine Java-Themen 11
K Input/Output Fehler bei Dateierzeugung Allgemeine Java-Themen 7
M Fehler bei Remoteinstallation von Java Allgemeine Java-Themen 5
M Fehler bei Verwendung von TexturePaint Allgemeine Java-Themen 16
M JUnit & Multithreading - sehr seltener Fehler Allgemeine Java-Themen 3
G Merkwürdiger Fehler NetBeans Allgemeine Java-Themen 2
G Native Library / Fehler beim Laden der .so/.dll Datei Allgemeine Java-Themen 17
P java tabelle auslesen - xls (excel) fehler Allgemeine Java-Themen 5
iB0T Unverständlicher Fehler Allgemeine Java-Themen 5
S Antlr Grammatik übersetzt ohne Fehler, dennoch wird Zahl nicht als Eingabe erkannt Allgemeine Java-Themen 4
S Fehler mit JScrollPane Allgemeine Java-Themen 4
K SimpleDateFormat Fehler Allgemeine Java-Themen 3
M import Fehler Allgemeine Java-Themen 2
M Startdatei konnte nicht geparst werden. Fehler in Zeile 0 Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben