1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Java Problem

Discussion in 'Programmieren' started by X-Stream, Dec 16, 2009.

Thread Status:
Not open for further replies.
  1. X-Stream

    X-Stream Byte

    Hallo zusammen,
    ich habe hier ein kleines (Grundsatz-) Problem in Java.
    Folgende Situation:
    Es handelt sich um einen Server, der natürlich auch irgendwo speichern muss, wer seine Clients sind. Dazu habe ich eine HashMap<String, Client> wobei der Key die IP-Addresse dieses Clients (zur Zuordnung) ist und die Values sind Beans mit Daten über diesen Client. Properties in dem (?) Client-Bean sind zum Beispiel name, berechtigungen etc.

    Ich möchte nun dem Nutzer ein Interface geben, mit dem er Clients herauswerfen kann. Dazu soll es eine Liste geben, die jeweils die Property Client.name anzeigt. Klickt man auf einen "Herauswerfen"-Button, so soll der Client, dessen Name aktuell selektiert ist herausgeworfen werden.

    Mein Problem ist jetzt, wie ich möglichst elegant von den Values der HashMap zur Liste komme. Über die Hashmap iterieren und dann zum ListModel hinzufügen, ja, aber was wenn ich nach Klicken des Buttons wissen will, welcher Client-Bean nun selektiert ist, damit ich den dann auch rauswerfen kann? Ich finde ja per JList.getSelectedIndex nur den Index heraus. Ein Workaround wäre hier, extra ein Array zu erstellen, dass eine Beziehung von Indices in der JList zu entsprechenden Clients herstellt, sodass ich über beziehungsArray[JList.getSelectedIndex] wieder zum eigentlichen Bean komme. Ist aber nicht elegant.

    Ich hoffe ihr versteht worauf ich hinaus will, zumal ich vermute, dass das eigentlich ein häufig auftretendes Problem sein müsste...

    Habe mir einiges über BeansBinding und Sachen wie SelectionInList durchgelesen, komme damit aber nicht klar - es gibt scheinbar keine vernünftigen Anfängertutorials...

    Bei Rückfragen bzw. Verständnisfragen schießt bitte los.

    Dankeschön!
     
  2. daboom

    daboom Megabyte

    Du kommst über so ein Client Objekt nicht wieder an die IP Adresse (also den Map Key) dran? So ein inverses Mapping ist immer hilfreich für solche Sachen, wenn nicht sogar zwingend erforderlich.

    Ansonsten warum muss die IP der Key sein? Könntest Du nicht gleich den Namen als Key nehmen, dann kommst Du direkt dran. (ich gehe mal davon aus, dass Du nicht nur den Index des selektierten Eintrags findest, sondern auch den selektierten Inhalt? Hab grad nich so tiefgreifende Erfahrung mit ListModels etc. ;))

    War das aber nich auch mal so, dass man komplette Objekte in die JList einfügen konnte und nur das Ergebnis der toString() darin angezeigt wurde (beim default Renderer)?
     
  3. X-Stream

    X-Stream Byte

    Ja, toString &#252;berschreiben funktioniert.
    Man k&#246;nnte sicher auch einen eigenen ListCellRenderer (?) schreiben.

    Ich habe mir gedacht, dass Profis das irgendwie eleganter l&#246;sen... zumal der Vorteil bei einer Beansbinding-Geschichte ja ist, dass man die Tabelle nicht mehr aktualisieren muss - wird ein neuer Client hinzugef&#252;gt, aktualisiert sich die Liste automatisch...

    Ich suche nochmal nach JList-Binding im BeansBinding und JGoodies Framework... Die sind nur sehr schlecht mit Tutorials versorgt...
     
Thread Status:
Not open for further replies.

Share This Page