Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino

Componenten auf einer JDesktopPane überprüfen

(1/6) > >>

MadMetzger:
Hallo zusammen!

In meinem Studium bin ich gerade mit einem Projekt beschäftigt. Wir sollen eine Anwendung zur Simulation von Stellen-Transitions-Netzen(PetriNetze) auf Basis von Java erstellen.

Hierbei bin ich auf eine Frage gestossen: Ich kann ein Netz mehrfach simulieren und solange die Anwendung offen ist, bleiben die Simulationen erhalten(Persistenz war nicht Bestandteil der Aufgabe). Bestehende Simulationen eines Netzes werden mir in meinem Hauptfenster innerhalb einer JList angezeigt. Nach gewisser Anzahl von Simulationsfenstern, kann es sein, dass man den Überblick verliert. In dem Fall möchte ich über einen Doppelklick auf den Eintrag in der Liste mir das Fenster wieder holen. Dazu muss ich für jedes Fenster(ein JInternalFrame), dass in der JDesktopPane abgelegt wurde, überprüfen, ob es eine Referenz auf diese markierte Simulation hat. Dazu lasse ich mir von der Pane alle Components (mit pane.components() )zurückgeben, jedoch ist mir bei dem Array, dass da zurückkommt nicht ganz klar, wie ich darüber iterieren kann. Wenn ich mit [0] anfange, bekomme ich schon eine ArrayIndexOutOfBoundsException um die Ohren geknallt... Aber ich bin mir sicher(habe mit Debugger geschaut und habe das Fenster auch dort gesehen), dass dort ein passendes Fenster vorhanden ist.  Oder wähle ich den falschen Ansatz. Stehe atm ein bißchen auf dem Schlauch in der Geschichte...

Anbei ein Schirmschuss zur Verdeutlichung...

Ralf_M_Petter:
Mir kommt der Ansatz zwar etwas kompliziert vor, du könntest für die Liste auch ein eigenes Datenmodell verwenden, wo dann die Referenz auf den Internalframe abgelegt ist. Aber poste doch mal die Stelle im Source wo der Fehler passiert mit der Angabe eventuell des StackFrames. Dann werden wir sicher eine Lösung finden.

Grüße

Ralf

MadMetzger:
Du meinst im Prinzip eine Wrapperklasse um die Simulation herum, die eine Referenz auf das Fenster hat? Das klingt sogar sehr gut... werde ich heute Mittag mal ausprobieren...

MadMetzger:
Tja, klappt ja an sich ganz gut mit der Wrapperklasse, ich kriege dann auch das passende Fenster i Zugriff, nur weiß ich nie genau, was ich mit dem Fenster machen soll. Es kann geschlossen worden sein, oder minimiert, oder auch nur hinter anderen versteckt. Welche Methode muss ich von den JInternalFrames aufrufen, damit ich das Fenster in jedem Fall kriege? Im Moment sage ich einfach nur setVisible(true) und es geht zwar aber irgendwie klappt es manchmal(?) nur auf den zweiten Klick und wenn es minimiert war, kommt zwar das Fenster in den Vordergrund aber der minimierte "Rest" bleibt bestehen...  ???

flaite:
Ralfs Ansatz würde ich erstmal zustimmen. Das mit dem ListModel.
Warum Wrapperklasse? Implementierst du http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/ListModel.html ?
JInternalFrame für User schliessbar machen und in der Liste lassen hört sich auch irgendwie gefährlich an.
JInternalFrame hat btw. sich vielversprechend anhöhrende Methoden wie toFront() und show().
Den Status kannst du offenbar mit so Methoden wie isIconified (in JInternalFrame) abfragen. Hab allerdings noch nie JInternalFrame benutzt. Aus meiner Erfahrung mit Swing würd ich sagen, dass du irgendwann weisst wie.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln