Internal Frames und Canvas-Element

MaggyMo

Aktives Mitglied
Guten Tag,

ich habe folgendes Problem:

Ich habe zwei Frames die gleichzeitig laufen sollen:
1) Das Spielfenster: Hierbei handelt es sich um ein Canvas-Element
2) Das Webcamfenster: Solange das Spielfenster geöffnet ist, soll auch dieses Fenster geöffnet sein.

Bevor diese beiden Fenster geöffnet werden,existiert eine Art Startseite, welche beim Anklicken des Start-Buttons die zuvor genannten Frames starten soll.

Das Problem liegt nun darin, dass das Webcamfenster kein Bild anzeigt und das Spielfenster sozusagen "blockt". Das Programm kann dann nicht mehr per Schließen-Icon geschlossen werden, sondern muss über die Entwicklungsumgebung abgebrochen werden. Ich habe nun schon den Tipp bekommen, dass es eventuell daran liegen kann, dass Swing damit nicht umgehen kann. Bzw. dass der Aufruf über den Handler nicht mit dieser Vorgehensweise klar kommt.
Aus diesem Grund will ich es nun mit InternalFrames versuchen. Für diesen Ansatz habe ich ein JDesktopPane erstellt und das Spielfenster hinzugefügt. Für das Webcamfenster habe ich eine eigene Klasse erstellt, welche von der Klasse JInternalFrame erbt. Nun habe ich das Problem, dass ich die Größe (vom Spielfenster) nicht anpassen und nach wie vor die Webcam nicht gestartet werden kann. Kann mir vllt jemand einen Tipp geben?

Liebe Grüße und Danke schonmal🙂
 
Was genau machst Du denn in den Fenstern?
Für mich hört sich das etwas danach an, dass Du den EDT Thread blockierst.
 
Hast du irgendwo eine Schleife, die die Objekte zeichnet? Wenn ja, blockiert die vermutlich wie @kneitzel geschrieben hat deine ganze GUI. Die muss dann sauber in einen eigenen Thread ausgelagert werden
 
Ja die Objekte werden über eine Schleife gezeichnet.
Diese Objekte werden mir ja auch angezeigt. Nur sobald ich das Webcamfenster hinzufüge, funktioniert garnichts mehr.
Okay mit Threads habe ich noch nie gearbeitet 🙁
 
Man müsste jetzt den Code sehen.

Punkt ist - du darfst im Event Dispatching Thread nichts machen, was lange läuft oder den blockiert. Ansonsten friert die GUI an. Sprich kleinere Rechnungen, Werte setzen - ja. Lang laufende Aufgaben oder gar Endlossschleifen um Objekte zu aktualisieren - nein.
 
Den Code kann ich leider nicht zeigen , da es sich um ein Projekt handelt, welches benotet wird.
Ich habe aber keine Endlosschleifen und ist mit der laufenden Aufgabe die Webcam gemeint?
 
Irgendwelche Aufgaben die lange dauern (wie z.b. komplizierte Berechnungen, Abrufen von Daten aus dem Netz etc.)

Die Frage bei der Webcam ist halt auch, wie die eingebunden ist, inwieweit da ein seperater Thread notwendig ist.

Ist halt ohne Code leider schwer zu beurteilen. Aber Einfrieren bzw. nicht mehr reagieren der GUI ist im Swing Umfeld zu weit über 90% darauf zurückzuführen, dass man den EDT blockiert.

Paar Infos dazu: https://en.wikipedia.org/wiki/Event_dispatching_thread
 
Den Code kann ich leider nicht zeigen , da es sich um ein Projekt handelt, welches benotet wird.
Ich habe aber keine Endlosschleifen und ist mit der laufenden Aufgabe die Webcam gemeint?
Dann geh den Code der Webcam im Debugger durch. Irgend was machst Du da, was wohl nicht zurück kommt.

Und da ist dann immer die Frage: Muss das in einen eigenen Thread? Muss da etwas asynchron gemacht werden, was Du synchron versuchst auszuführen? Das ist pauschal nicht zu sagen.

Ansonsten mach ein eigenes, neues Projekt nur aus einem Fenster, das die Webcam anzeigen soll. Blockiert das auch schon?
Das wäre dann ein möglicher Weg, dass Du
a) das Problem besser lokalisierst
b) Du etwas an Code hast, das Du so nicht einreichen wirst.
 

Neue Themen


Zurück
Oben