Swing Problem bei der Darstellung "komplexer Objecte" in einer JList mit AbstractListModel:

Ulathar

Aktives Mitglied
Hallo,

ich dreh mich hier gerade im Kreis bei einem Problem, was eigendlich garkeins sein dürfte -.-.
Ich habe ein recht Komplexes GUI mit verschachtelten JSplitPanes, die wiederum in JPanels und/oder Tabs liegen. Mit verschachtelt meine ich, dass ich jeweils in einer Splitpane eine weitere habe.

Soweit so gut.
In einer der Splitpanes habe ich eine JList welche dazu dient geladene Datensätze darzustellen. Und genau hier ist mein Problem.

So lang ich die JList "hardcoded" initialisiere, mit einem Array an Elementen in dieser, so werden diese Korrekt im GUI dargestellt (habe einen eigenen ListCellRenderer). Diese Liste ist dann aber statisch und es lassen sich keine Elemente hinzufügen/entfernen.

Aus diesem Grund habe ich ein eigenes ListModel geschrieben (habs sowohl mit nem AbstractListModel als auch einem DefaultListModel probiert mit selbem resultat -.-).

Hier mal ein Auszug aus dem Model:

Java:
public class DatasetListModel extends AbstractListModel {
    
	/**
	 * Class Variables
	 */
	private static final long serialVersionUID = 1000L;
	
	private Dataset list;
	
	
	
    public DatasetListModel(Dataset list) { 
    	this.list = list; 
    }
    
    
    public int getSize() { 
    	return list.size(); 
    }
    
    
    public Object getElementAt(int index) {    	
    	return list.get(index); 
    }
    
    
    public void addElement(Layer l) {
    	this.list.add(l);
    }
    
    
    public Dataset getModelList() {
    	return this.list;
    }
}

Wenn ich nun aber zur Laufzeit elemente in dieses einfüge, erscheinen die einfach nicht im GUI, egal wie oft ich repaint, validate oder sonst was calle.

Das verwendete Dataset Object ist in diesem Fall nix weiter als eine Klasse die "LinkedList-Class" erweitert.

Jemand ne Idee wo mein Denkfehler ist? Wenn ich mir die ListModel examples bei Oracle ansehe, sieht das total simpel aus (allerdings arbeiten die auch nur mit 0815 Strings...).
Die JList bleibt immer leer, allerdings sind die Elemente auf jeden fall nach dem Hinzufügen vorhanden, da ich sie mir manuel via System.outs ausgeben kann (aus der im Model verwendeten Liste!).
 
Zuletzt bearbeitet:
OH MEIN GOTT!

Der Teufel steckt mal wieder im Detail (Kleingedruckten) -.- da saß ich jetzt mehr als 3 Tage dran und hab die absurdesten Dinge hin- und hergebogen, weil ichs mir nicht erklären konnte.
Ich hab immer nur den Part mit "after the component has changed, you should call the validate() function to repaint the compoent and its children" (sinngemäß wiedergegeben) gelesen.


Es funktioniert, danke dir vielmals!
 
Zuletzt bearbeitet:

Zurück
Oben