Swing JList in JScrollPane aktualisiert sich nicht

Status
Nicht offen für weitere Antworten.

Souljumper

Aktives Mitglied
hi,

ich hab eine JList mit einem DefaultListModel in einer ScrollPane. Jedesmal wenn ich dem Model daten mit addElemnt() hinzufüge sehe ich leider nichts davon in der Liste.

Hab mal ausprobiert die ScrollPane außenvor zu lassen und siehe da es funktioniert, irgendwo weigert sich also die ScrollPane sich zu aktualisieren. Hab es jetzt schon mit repaint() probiert - das half aber nicht soviel.

Jemand eine Idee woran das liegen kann das die ScrollPane mit die Inhaltsaktualisierung nicht anzeigt ?
 
Versuch nach dem Anfügen mal ein manuelles DefaultListModel.fireContentChanged(...) AbstractListModel (Java Platform SE 6))

funktioniert bei mir nicht, die Methode fireContentsChanged wird mir nicht angeboten.

((DefaultListModel)list.getModel()). funktioniert nicht
((AbstractListModel)list.getModel()). funktioniert auch nicht

(list ist die JList)

hab allerdings auch kein java 6 sondern nur 5. Aber die Methode gabs schon in 1.4.2 daran sollt es nicht liegen.

Caste ich falsch oder warum komme ich niht n die Methode dran?

edit:
hier die methode wo ich das benutzen will
Java:
	public void queryAllAuthors(JList list) throws SQLException
	{
		Statement s = conn.createStatement();
		ResultSet authors;
		s.execute("SELECT name FROM AUTOR");
		authors = s.getResultSet();
		/* ResultSet auf letzte Zeile setzen (letzte abgefragte Ergebniszeile)
		 * und größe des Arrays = Anzahl gefundener Ergebniszeilen setzen 
		 * Danach result wieder vor ersten Ergebniseintrag setzen */
		authors.last();
		String [] names = new String[authors.getRow()];
		authors.beforeFirst();
		
		int i=0;
		while (authors.next()){names[i++] = authors.getString("name");}
		
		for (i=0; i < names.length; i++)
			((DefaultListModel)list.getModel()).addElement(names[i]);
		
		//((DefaultListModel)list.getModel()).fireContentChanged(list, 0,  names.length);

	}
 
Zuletzt bearbeitet:
Mein Fehler.

((DefaultListModel)list.getModel()).fireContentsChanged(list, 0, names.length);
 
Mein Fehler.

((DefaultListModel)list.getModel()).fireContentsChanged(list, 0, names.length);


ne, ich krieg gar keine fire-irgendwas angeboten in der Syntaxverfolgständigung. (siehe screenshot)

ich versteh das allerdings nicht, da es die methode doch schon in java 1.4.2 gab und ich sicher auf 1.5 compiliere
 

Anhänge

  • bild.jpg
    bild.jpg
    36,1 KB · Aufrufe: 39
im Gegensatz zum bekannten DefaultTableModel/ AbstractTableModel ist hier die fire-Methode protected,
kann also nur von erbenden Klassen aufgerufen werden (gleiche package kommt wohl weniger in Frage)

wenn du aber in ein normal gutes Model etwas sauber mit addElement() einfügst, müsste das doch auch von selber klappen..,
poste ein Testprogramm, vereinfacht ohne DB-Anfrage sondern mit einer Aktion, die 2-3 Zufallsstrings hinzufügt

oder wie fügst du JList und JScrollPane zusammen?
nur
new JScrollPane(list);
und
scrollPane.setViewportView(list);
sind gut
 
Zuletzt bearbeitet von einem Moderator:
ok, das funktioniert.

ich hatte

scrollPane.add(meineJList);

gemacht.

wenn man es im konstruktor mitgibt passt es.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben