einzelne Objekte zwischen 2 JListen austauschen

i-k-e

Grünschnabel
hallo zusammen,

ich habe mich hier durch einige posts geklickt, aber leider keine antwort auf mein problem gefunden.

in meinem programm gibt es berechtigungen.
alle vorhandenen berechtigungen stehen in einem vector (also in der einen jlist).
die berechtigungen die ein benutzer besitzt stehen in einem anderen vector (in der zweiten jlist). beide listen haben jeweils ein eigenes listmodel mit dem ich die daten verwalte.
bis dahin funktioniert auch alles!

BEISPIEL:
in der einen jlist stehen die rechte des benutzers (kundenAnlegen, kundenSehen)
in der anderen jlist stehen ALLE möglichen rechte (kundenBearbeiten, kundenLöschen,...)

PROBLEM:
ich möchte per doppelklick bzw. button die berechtigungen verteilen.
allerdings werden die daten der einen jlist nach dem ersten klick auf den button zur verteilung nicht mehr dargestellt.

im jeweiligen model (dort im vector) sind die daten aber richtig verteilt. zumindest gibt mir system.out die daten vor bzw nach einer änderung korrekt aus.
die jlist mit den rechten des benutzers wird aber ohne inhalt angezeigt!!

MEIN LÖSUNGSANSATZ:

Button-ActionListener:
Code:
		btnRechtErteilen.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				Berechtigung recht = (Berechtigung) allerechte.getSelectedValue();
				
				rechteListenModell.addElement(recht);
				allerechte.clearSelection();
				alleRechteListenModell.removeElement(recht);
				allerechte.repaint();
				benutzerrechte.repaint();
				
				if (alleRechteListenModell.getSize() <= 0) {
					btnRechtErteilen.setEnabled(false);
				}
				else {
					btnRechtErteilen.setEnabled(true);
				}
			}
		});

Model:
Code:
	public void addElement(Berechtigung recht) {
		System.out.println("anzahl vor add: "+berechtigungen.size());
		berechtigungen.add(recht);
		System.out.println("anzahl nach add: "+berechtigungen.size());
		System.out.println("Rechte nach add: "+berechtigungen.toString());
	}
	
	public void removeElement(Berechtigung recht) {
		System.out.println("anzahl vor remove: "+berechtigungen.size());
		berechtigungen.remove(recht);
		System.out.println("anzahl nach remove: "+berechtigungen.size());
		System.out.println("Rechte nach remove: "+berechtigungen.toString());
	}

[EDIT] -> ich habe zur veranaschaulichung noch ein vorher-nachher-bild angehängt...
 

Anhänge

  • problem.JPG
    problem.JPG
    21,3 KB · Aufrufe: 21
Zuletzt bearbeitet:
danke erstmal für die antwort... das problem scheint wirklich ziemlich versteckt zu sein.

die vectoren in den modellen der beiden jlisten werden definitiv korrekt gefüllt!
ich lasse mir den inhalt (und anzahl der objekte) der beiden vectoren per system.out. bei knopfdruck anzeigen und es stehen die gewünschten objekte drin...

nur angezeigt werden sie nicht. ich habe versucht die listen neu zu zeichnen -> ergebnis: es wird in beiden listen KEIN element mehr angezeigt.

muß ich die veränderten vectoren evtl. noch einmal neu der jeweiligen liste zuordnen ich glaube im code oben habe ich ja auch schon versucht das jeweilige modell den listen neu zuzuordnen -> ergebnis: nichts passiert

ich kann auch nur einen klick auf einen button ausführen, danach kann ich in den listen nichts mehr auswählen. fast so als würden die beiden listen "abstürzen", aber es werden keinerlei fehler geworfen...

brauchen die listen evtl. noch einen propertychangelistener (oder anderen listener)

HILFE
 
Zuletzt bearbeitet:
ok... ein einfaches updateUI() auf jede liste löst das problem der anzeige!!
etwas mehr geduld beim probieren, und irgendwann läufts auch ;-)

TROTZDEM DANKE!
 
Zurück