Hallo Forum,
dies mein erster Thread in Sachen Java und ich würde mich freuen, wenn Ihr mir helfen könntet
Zu beginn erst einmal eine kleine Übersicht:
Ich möchte eine Client/Server Applikation in Eclipse realisieren. Der Client soll sich zum Server verbinden und ihm in regelmäßigen Abständen Informationen senden.
Auf Konsolenebene funktioniert das ganze auch schon ganz gut. Der Client verbindet sich, der Server empfängt und gibt die Informationen auf der Konsole aus. Auch mehrere Clients können sich verbinden, alles kein Problem.
Nun möchte ich für den Server eine GUI schreiben. Es sollten in einem Fenster die Werte der Clients als JProgressbar dargestellt werden (JProgressbar als dynamisches Diagramm missbraucht
)
Soweit so gut. Verbindet sich nun ein Client, wird auch eine GUI erzeugt. Verbindet sich jedoch ein weiterer, wird erneut eine GUI erzeugt. Warum das so ist verstehe ich auch. Nur möchte ich nun diese beiden Jframes zusammenpacken. Das gelingt mir nun seit 3 Tagen nicht...
Hier erstmal der Quelltext des Servers:
dies mein erster Thread in Sachen Java und ich würde mich freuen, wenn Ihr mir helfen könntet
Zu beginn erst einmal eine kleine Übersicht:
Ich möchte eine Client/Server Applikation in Eclipse realisieren. Der Client soll sich zum Server verbinden und ihm in regelmäßigen Abständen Informationen senden.
Auf Konsolenebene funktioniert das ganze auch schon ganz gut. Der Client verbindet sich, der Server empfängt und gibt die Informationen auf der Konsole aus. Auch mehrere Clients können sich verbinden, alles kein Problem.
Nun möchte ich für den Server eine GUI schreiben. Es sollten in einem Fenster die Werte der Clients als JProgressbar dargestellt werden (JProgressbar als dynamisches Diagramm missbraucht
Soweit so gut. Verbindet sich nun ein Client, wird auch eine GUI erzeugt. Verbindet sich jedoch ein weiterer, wird erneut eine GUI erzeugt. Warum das so ist verstehe ich auch. Nur möchte ich nun diese beiden Jframes zusammenpacken. Das gelingt mir nun seit 3 Tagen nicht...
Hier erstmal der Quelltext des Servers:
Java:
package Client_Server;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.StringTokenizer;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import java.awt.BorderLayout;
import java.awt.Container;
public class Server extends JFrame implements Runnable {
private static final long serialVersionUID = 1L;
Socket socket;
BufferedReader server_in;
String s;
int link, maxlink;
JProgressBar statusBar;
JTextArea textArea;
public Server(Socket s) {
socket = s;
}
public void run() {
System.out.println("Server - connection started to "
+ socket.getInetAddress());
String str;
try {
server_in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
while ((s = server_in.readLine()) != null) {
//SCHNIPP
//Client Nachrichten bearbeiten
//SCHNAPP
System.out.println("max link: " + maxlink);
System.out.println("link: " + link);
textArea.append("maxlink:" + maxlink + "\n");
statusBar.setMaximum(maxlink);
statusBar.setValue(link);
}
server_in.close();
} catch (Exception e) {
System.out.println("Server " + e);
}
try {
socket.close();
System.out.println("socket closed");
} catch (Exception e) {
}
System.out.println("Server - connection closed.");
}
public void create_gui() {
//TestGUI
JLabel nachrichtenLabel;
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(150, 200);
setTitle("Monitor");
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
statusBar = new JProgressBar(0, 100);
statusBar.setValue(0);
statusBar.setStringPainted(true);
nachrichtenLabel = new JLabel("empfangene Nachrichten:");
cp.add(nachrichtenLabel, BorderLayout.NORTH);
cp.add(statusBar, BorderLayout.SOUTH);
textArea = new JTextArea("", 1, 1);
textArea.setLineWrap(true);
textArea.setEditable(false);
cp.add(textArea, BorderLayout.CENTER);
cp.add(new JScrollPane(textArea), BorderLayout.CENTER);
setVisible(true);
}
private void update_gui() {
//Hier eventuell die GUI neu zeichnen?
}
public static void main(String[] args) {
ServerSocket server = null;
Socket s = null;
Server myServer = null;
Thread t;
try {
server = new ServerSocket(1234);
while (true) {
s = server.accept();
myServer = new Server(s);
myServer.create_gui();
//myServer.update_gui();
t = new Thread(myServer);
t.start();
}
} catch (Exception e) {
System.out.println("ServerMain " + e);
}
try {
server.close();
} catch (Exception ex) {
}
}
}