Hallo,
ich habe einen ListCellRenderer so modifiziert, damit man damit auch mehrere Zeilen in einen Listeneintrag darstellen kann.
Es handelt sich dabei um ein JPanel, in dem mit Hilfe des GroupLayout-Managers diverse JLabels angeordnet sind. Die JLabels, welche nicht gebraucht werden, werden auf .setVisible(false) gesetzt.
Es ist in vom Prinzip in etwa so aufgebaut wie http://www.java-forum.org/awt-swing-swt/102014-jlist-jspinner.html, nur ohne JSpinner. Durch das Einsetzen von Rahmen lasse ich das ganze wie eine JTable aussehen.
Ich benutze ein DefaultListModel für die Daten.
Wenn ich neue Daten in der Liste darstellen will, lösche ich zuerst mit .clear das DefaultListModel und füge die neuen Daten hinzu (aus einer Datenbank). Dann wird der selektierte Eintrag gesetzt.
Diese ganze Aktion wird in einem separaten Thread ausgeführt, da unter anderem die Datenbankabfrage doch sehr Zeitaufwendig ist.
Danach wird für das ganze Fenster .pack() und .repaint() ausgeführt.
Mein Programm ist mehrsprachig und beim Wechseln der Sprache wird die Liste neu erstellt.
Dabei tritt nun sporadisch manchmal ein Fehler auf.
Machmal stimmt bei einem Listeneintrag die Höhe nicht mehr. Das tritt wie gesagt nur sporadisch auf und meist ist es einer der oberen Listeneinträge.
Wenn man den entsprechenden Eintrag markiert, verändert sich seine Höhe nicht.
Erst wenn man das DefaultListModel leert und wieder neu befüllt, verschwindet der Fehler wieder, manchal aber auch wieder nicht.
Es wird auch keinerlei Fehlermeldung ausgegeben.
Ich habe es schon mit .validate() und .revalidate() probiert, das hat aber nichts genützt.
Leider ist der Code zu umfangreich und kompliziert um ihn hier zu posten.
Und ich habe es nicht geschafft ein KSKB zu erstellen, das diesen Fehler reproduziert.
Würdet ihr bitte eure Kristallkugeln zu rate ziehen um mir ein paar Tipps zu geben, woran das liegen könnte und wie man es abstellt.
Ich schätze mal, daß das evtl. irgendwas mit den Thread zu tun hat.
Im Anhang sind ein paar Bilder der Liste. Beispiel00 und Beispiel02 sind in Ordnung, Beispiel01 und Beispiel03 weisen den besagten Fehler auf.
Es ist noch anzumerken, daß die Listeneinträge in dieser Liste momentan nur 1 oder 3 zeilig sind.
MfG
hansmueller
ich habe einen ListCellRenderer so modifiziert, damit man damit auch mehrere Zeilen in einen Listeneintrag darstellen kann.
Es handelt sich dabei um ein JPanel, in dem mit Hilfe des GroupLayout-Managers diverse JLabels angeordnet sind. Die JLabels, welche nicht gebraucht werden, werden auf .setVisible(false) gesetzt.
Es ist in vom Prinzip in etwa so aufgebaut wie http://www.java-forum.org/awt-swing-swt/102014-jlist-jspinner.html, nur ohne JSpinner. Durch das Einsetzen von Rahmen lasse ich das ganze wie eine JTable aussehen.
Ich benutze ein DefaultListModel für die Daten.
Wenn ich neue Daten in der Liste darstellen will, lösche ich zuerst mit .clear das DefaultListModel und füge die neuen Daten hinzu (aus einer Datenbank). Dann wird der selektierte Eintrag gesetzt.
Diese ganze Aktion wird in einem separaten Thread ausgeführt, da unter anderem die Datenbankabfrage doch sehr Zeitaufwendig ist.
Danach wird für das ganze Fenster .pack() und .repaint() ausgeführt.
Mein Programm ist mehrsprachig und beim Wechseln der Sprache wird die Liste neu erstellt.
Dabei tritt nun sporadisch manchmal ein Fehler auf.
Machmal stimmt bei einem Listeneintrag die Höhe nicht mehr. Das tritt wie gesagt nur sporadisch auf und meist ist es einer der oberen Listeneinträge.
Wenn man den entsprechenden Eintrag markiert, verändert sich seine Höhe nicht.
Erst wenn man das DefaultListModel leert und wieder neu befüllt, verschwindet der Fehler wieder, manchal aber auch wieder nicht.
Es wird auch keinerlei Fehlermeldung ausgegeben.
Ich habe es schon mit .validate() und .revalidate() probiert, das hat aber nichts genützt.
Leider ist der Code zu umfangreich und kompliziert um ihn hier zu posten.
Und ich habe es nicht geschafft ein KSKB zu erstellen, das diesen Fehler reproduziert.
Würdet ihr bitte eure Kristallkugeln zu rate ziehen um mir ein paar Tipps zu geben, woran das liegen könnte und wie man es abstellt.
Ich schätze mal, daß das evtl. irgendwas mit den Thread zu tun hat.
Im Anhang sind ein paar Bilder der Liste. Beispiel00 und Beispiel02 sind in Ordnung, Beispiel01 und Beispiel03 weisen den besagten Fehler auf.
Es ist noch anzumerken, daß die Listeneinträge in dieser Liste momentan nur 1 oder 3 zeilig sind.
MfG
hansmueller