Java: Abhängigkeiten von Klassen und Objekten

Wie kann ich der erzeugten Instanz des GUIs in der main-Methode funktionierende Parameter übergeben? model & panel kommen ja von MRoot, von dem ich nur ungern den Code posten möchte. Aber das sollte ja egal sein.

MRoot muss zur Integration bleiben, die Module erben alle davon und werden so verknüpft. Jedenfalls, in diesem Fall gar nicht. Der Code ist ja so geschrieben, dass das GUI eine Instanz des Clients hat und nicht umgekehrt. Man startest also nicht mehr den Client, sondern das GUI welches in der Init methode einen Client erzeugt. (main Methode muss somit also im client und nicht im GUI auskommentiert werden).

Idealerweise sollte es so geschrieben werden, dass der Client nichts von irgendwelchen GUI Komponenten weiss. (--> entsprechende swing und awt Imports aus client entfernen) In der main-Methode wird ja eine instanz des Clients erzeugt. Man könnte es zwar auch umgekehrt schreiben (also dass der Client eine Instanz des GUIs hätte), würde dann aber meines Erachtens weniger Sinn machen.

In der main-Methode wird zwar eine Instanz des Clients erzeugt, diese wird aber gar nie aufgerufen, denn du startest jetzt ja direkt das GUI und nicht mehr den Client. Die Instanz des Clients wird ja bereits in der Methode initComponent des GUIs erzeugt:

public void initComponent() { //start Layout
fc = new FunkClient();

Neue Anweisungen: Das GUI soll wirklich nur auf 2 Methoden vom Client zugrifen und ansonsten komplett unabhängig vom Client sein. Dieser soll NICHT von MRoot erben, sondern nur das GUI selbst. D.h. wichtig wären nur, dass Server und Client einmal miteinander kommunizieren, der Server wartet auf den client, dieser meldet sich aber nicht.


SERVER: warte auf Client...
SERVER: Anfrage von irgendeinem Client erhalten!
/XXX.XXX.XXX.XXX
SERVER: erhaltene Client-Daten: [Verwende Kanal 16]
Ankommendes Signal auf Kanal 16
5
SERVER: erhaltene Client-Daten: [STOP!]
------------------Session Complete-----------------


Wenn man aber im GUI nur zwei Methoden des Clients verwenden darfst (captureAudio und playAudio) hat man das Problem, dass du die beiden Threads vom Client ins GUI verschieben müsstest, da nur der ToggleButton (und somit das GUI) weiss, wie lange dass gecaptured oder geplayt werden soll.

Mit vier Methoden wärs viel einfacher und besser, da man somit keine client-logik ins GUI verlagern müsste (startCapture, stopCapture, startPlay und stopPlay). Auf diese Art könnte man das Threadhandling im client belassen und im GUI aus den mousePressed bzw. mouseReleased einfach die entsprechenden methoden des clients aufrufen.

SERVER: erhaltene Client-Daten: [Verwende Kanal 16STOP!]
Ankommendes Signal auf Kanal 16
-1
java.lang.StringIndexOutOfBoundsException: String index out of range: -1

Wie krieg ich das jetzt hin? Soll man da irgendwie ein Testmodul schreiben bevor es integriert wird? Die Ausnahme bezieht sich denke ich auf die Methode playAudio weil wir da eine derartige catch-Anweisung drinnen haben...