Moin ich bins wieder,
ich bin an einem Chatprogramm am basteln und stehe vor einem Problem.
Und zwar möchte ich das Projekt in eine MVC Architektur realisieren und habe das ganze in kleinen Schritten angefangen.
Erst einmal eine Konsolen Applikation, dann das ganze mit Threads verbunden und nun möchte ich das in eine GUI packen.
Jetzt stehe ich vor dem Problem, dass ich eine View erstellt habe und nicht genau weiß wie ich es schaffe, dass wenn ich Strings in ein TextField eingebe, dann möchte ich die ja auch an jemanden senden können.
Ich habe 2 Modells -> ein Servermodell mit ServerSocket und ein Clientmodell mit einem Socket.
Ich habe in diesen Klassen "senden" und "empfangen" Methoden mit DatainputStreams und DataInputStreams.
Ebenfalls habe ich einen Controller, welcher für die Erzeugung der Server und des Clients zuständig ist und in welchem Threads erstellt werden, damit Nachrichten gleichzeitig gesendet und empfangen werden können.
Im Controller werden die Sende und Empfangen Methoden aus den Server und Client genutzt.
Dennoch finde ich keine Lösung, wie ich den Scanner ersetzen kann durch eine View und den Inhalt eines Textfields soweit nutzen kann, dass ich die Streams befüllen und ablesen kann.
ich bin an einem Chatprogramm am basteln und stehe vor einem Problem.
Und zwar möchte ich das Projekt in eine MVC Architektur realisieren und habe das ganze in kleinen Schritten angefangen.
Erst einmal eine Konsolen Applikation, dann das ganze mit Threads verbunden und nun möchte ich das in eine GUI packen.
Jetzt stehe ich vor dem Problem, dass ich eine View erstellt habe und nicht genau weiß wie ich es schaffe, dass wenn ich Strings in ein TextField eingebe, dann möchte ich die ja auch an jemanden senden können.
Ich habe 2 Modells -> ein Servermodell mit ServerSocket und ein Clientmodell mit einem Socket.
Ich habe in diesen Klassen "senden" und "empfangen" Methoden mit DatainputStreams und DataInputStreams.
Ebenfalls habe ich einen Controller, welcher für die Erzeugung der Server und des Clients zuständig ist und in welchem Threads erstellt werden, damit Nachrichten gleichzeitig gesendet und empfangen werden können.
Im Controller werden die Sende und Empfangen Methoden aus den Server und Client genutzt.
Java:
package MVC;
import java.io.IOException;
import java.util.Scanner;
public class Controller implements Runnable {
private static ModellClient modellClient;
private static ModellServer modellServer;
static View view;
static String nachrichtServer;
static String nachrichtClient;
static boolean isServer = false;
static String msg;
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) throws IOException {
Controller c1 = new Controller();
Thread thread = new Thread(c1);
if (isServer) {
modellServer = new ModellServer();
view = new View();
view.setVisible(true);
thread.start();
sendenVonNachrichten(msg);
} else {
modellClient = new ModellClient();
view = new View();
view.setVisible(true);
thread.start();
sendenVonNachrichten(msg);
}
}
public static void sendenVonNachrichten(String msg) throws IOException {
while (true) {
if (modellServer != null) {
//
msg = scanner.nextLine();
modellServer.nachrichtenSenden(msg);
} else if (modellClient != null) {
//
msg = scanner.nextLine();
modellClient.nachrichtenSenden(msg);
}
}
}
@Override
public void run() {
while (true) {
if (modellClient != null) {
try {
nachrichtClient = modellClient.nachrichtEmpfangen();
} catch (IOException e) {
e.printStackTrace();
}
System.out.print(nachrichtClient);
} else if (modellServer != null) {
try {
nachrichtServer = modellServer.nachrichtEmpfangen();
} catch (IOException e) {
e.printStackTrace();
}
System.out.print(nachrichtServer);
}
}
}
}
Dennoch finde ich keine Lösung, wie ich den Scanner ersetzen kann durch eine View und den Inhalt eines Textfields soweit nutzen kann, dass ich die Streams befüllen und ablesen kann.