Server Daten Visualisieren

Kassel

Aktives Mitglied
hi commmunity,

ich habe vor die daten die ich von den clients bekomme darstellen ... ich hate hier im forum schon ein bisschen diskutiert und einige meiner probleme gelöst. ich habe jetzt einen server der für jeden eingehenden client einen thread erzeugt.

ich möchte dass jeder client des sich anmeldet einen viertel des bildschirms bekommt, wo seine daten angezeigt werden ... dass soll natürlich dynamisch geschehen ... wie kann ich dass machen ?

hier eine skizze um es zu verdeutlichen:

struktur.jpg


ich frage mich soll ich erst eine hintergrund gui machen mit logo und freier fläche, die freie fläche als ein scrollpane erstellen und aufs scroll pane ein gridlayout draufsetzen dass den bildschirm in 4 teile teilt, jedoch weiss ich nicht wie ich dynamisch für jeden thread so ein panel rein setzen kann ????

hier mein kleiner server ( daten die ich bekomme habe ich noch nicht gesetzt ):
Code:
import java.io.*;
import java.net.*;
import java.util.*;

public class TermoServer
{
	
	public TermoServer() throws IOException
	{
		init();
	}
	
	public void init() throws IOException
	{
		System.out.println ("Server starting...\n"); 
		//
		ServerSocket server = new ServerSocket (8000);
		while (true)
		{
			//
			Socket sk = server.accept ();
			System.out.println ("Accepting Connection...\n");
			//
			new ServerThread (sk).start ();
		}
	}
}

und

Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

class ServerThread extends Thread
{
 private Socket sk;
 public int speed;
 public String ip;
 
 public ServerThread (Socket sk)
 {
  this.sk = sk;
 }
//
 public void run ()
 {
  BufferedReader in = null;
  
  try{
    InputStreamReader isr;
    isr = new InputStreamReader (sk.getInputStream ());
    in = new BufferedReader (isr);
    byte[] buffer = new byte[1024];
    

    while(true){
      //
      String cmd = in.readLine ();
      System.out.println(cmd);
     // if (cmd == null)
       //   break;
      cmd = cmd.toUpperCase ();
      if (cmd.startsWith ("BYE")){
      	 
         break;
      }else{
        
      }
    }
    }catch (IOException e)
    {
       System.out.println (e.toString ());
    }
    finally
    {
      System.out.println ("Closing Connection...\n");
      
      try{
       if (in != null)
         in.close ();
        if (sk != null)
          sk.close ();
      }
      catch (IOException e)
      {
      	System.out.println("close err"+e);
      }
    }
 }
}
 

Sneek

Aktives Mitglied
Hallo, ist es wichtig, dass das ganze dynamisch ist, du könntest ja auch von vornherein ein 2x2 Gridlayout erstellen. Oder du richtest pro einkommenden Clienten den LayoutManager neu ein.

Aber was du auch versuchen könntest, wäre einen LayoutManager zu nehmen, der das Bild dann pro Element automatisch an passt, also erstes Element nimmt ganzen Monitor ein, kommt ein neues hinzu, wird der Platz in zwei Hälften geteilt.
Zum Beispiel fügst du die ersten zwei Elemente in "West" ein, die nächsten zwei "East", dann wird doch das ganze automatisch angepasst, wenn ich es richtig in Erinnerung habe.

Gruß aus Kassel
Sneek
 

Kassel

Aktives Mitglied
Hmm ... also ich weiss was du mir sagen willst ... ja es muss dynamisch sein da ich ja nicht weiss wie viele Clients die mir Daten zu senden dran geschaltet werden - du kannst dir dass vorstellen wie eine wetterstation, die clients die an verschiedenen orten sind connecten sich ürgend wann und schicken daten in dem moment soll meine selbst gebastelter termometer erscheinen (in viertel des bildschirms) mit zum beispiel IP: 111.11.11.111 und temperatur=20°C. wenn jetzt ein weiterer client sich zu connected soll ein weiterer termometer erscheinen mit bezeichnung IP: 22.222.22.222 ( nur als beispiel ) ... und s weiter

wie lässt sich dass umsetzen ... ich habe jetzt einen controller geschrieben der den server startet und den hintergrund erstellt also das logo in ein panel und ein panel dass ich content genannt habe wo ich dann die anzeigen rein bauen will. ich habe noch keine idee wie ...aber muss ja ürgend wie mögich sein
 

Kassel

Aktives Mitglied
Also ich habe es jetzt anders geregelt ich erzeuge einfach für jeden Thread ein Panel dass ich dann in ein JScrollPane hinzufüge.

Jetzt habe ich dass Problem dass ich einem JScrollPane kein GridLayout übergeben kann ... deswegen habe ich ein JPanel erstellt und ihm ein GridLayout(0,2) übergeben und dieses dann dem JScrollPane.

also sieht meine Struktur so aus:

contentPane -> JscrollPane ( panel mit gridlayout )

ich möchte ja dynamisch weitere JPanels hinzufügen die ein viertel des bildschirms sind -> dass klappt auch bis zum 4 Panel dann entsprechen sie auch der grösse die ich will, doch wenn ich ein weiteres Panel hinzufüge sollte eigentlich rechts ein scroller erscheinen und unten ein weiteres hinzugefügt werden , jedoch wird ein weiteres hinzugefügt und es wird gequetscht die anderen panells werden immer kleiner je mehr ich hinzufüge und es kommt kein scroller.

wie kann ich dass verhindern ?

Code:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.xml.ws.handler.MessageContext.Scope;

public class MainFrame extends JFrame {

	public JFrame frame;
	public JScrollPane scroll;
	public JPanel scrollablePanel;
	public Container contentPane=null;

	public MainFrame() {
		init();
	}

	private void init() {
		// TODO Auto-generated method stub
		Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
		int xSize = ((int) dim.getWidth());
		int ySize = ((int) dim.getHeight());
		setSize(xSize, ySize);

		// Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		// frame.setBounds(0, 0, screenSize.width, screenSize.height);

		contentPane = this.getContentPane();
		//BoxLayout boxLayout = new BoxLayout(contentPane, BoxLayout.Y_AXIS);
		//contentPane.setLayout(boxLayout);
		
		BorderLayout borderLayout = new BorderLayout();
		contentPane.setLayout(borderLayout);

		// Logo
		BufferedImage myPicture = null;
		try {
			myPicture = ImageIO.read(new File("uni.jpg"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		JLabel picLabel = new JLabel(new ImageIcon(myPicture));

		// HEADER
		JPanel header = new JPanel();
		header.setSize(xSize, 150);
		header.add(picLabel);
		contentPane.add(header, BorderLayout.PAGE_START);

		
		// CONTENT
		Color c = new Color(255, 255, 240);
		JPanel contentPanel = new JPanel();
		contentPanel.setSize(xSize, ySize-150);
		contentPanel.setBackground(c);
		//contentPane.add(contentPanel, BorderLayout.CENTER);

		//ScrollPanel
		Color d = new Color(100, 55, 0);
		scrollablePanel=new JPanel();
//		scrollablePanel.setSize(xSize, ySize-150);
		scrollablePanel.setLayout(new GridLayout(0,2));
		scrollablePanel.setBackground(d);
		
		//ScrollPane
		scroll = new JScrollPane(scrollablePanel);
		scroll.setSize(xSize, ySize-150);
        scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        scroll.setBorder(BorderFactory.createLineBorder(Color.magenta));
//        scroll.setBounds( 0, 0,
//                getScrollablePanel().getPreferredSize().width + 20,
//                Math.max( getScrollablePanel().getPreferredSize().height,
//                    ( Toolkit.getDefaultToolkit().getScreenSize().height / 4 ) * 3 ) );
        contentPane.add(scroll,BorderLayout.CENTER);
		//contentPanel.add(scrollablePanel);
		setVisible(true);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}


	public JScrollPane getScroll() {
		return scroll;
	}

	public void setScroll(JScrollPane scroll) {
		this.scroll = scroll;
	}

	public JPanel getScrollablePanel() {
		return scrollablePanel;
	}

	public void setScrollablePanel(JPanel scrollablePanel) {
		this.scrollablePanel = scrollablePanel;
	}

}

und im Thread für jeden Client füge ich ein Panel hinzu:


Code:
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
		int xSize = ((int) dim.getWidth());
		int ySize = ((int) dim.getHeight());
		JPanel panel1=new JPanel();
		Color c = new Color(125, 150, 100);
		panel1.setBackground(c);
		panel1.setBorder(BorderFactory.createLineBorder(Color.ORANGE));
		panel1.setMinimumSize(new Dimension(xSize/2, (ySize-150)/2));
		fc.getMf().getScrollablePanel().add(panel1);
		fc.getMf().getContentPane().validate();
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Daten über port abfangen mit proxy server Allgemeine Java-Themen 12
T Gleichzeitige Zugriffe auf Daten auf dem Server Allgemeine Java-Themen 11
ruutaiokwu MS Exchange Server 2003 Daten auslesen Allgemeine Java-Themen 2
N Daten auf Server kopieren Allgemeine Java-Themen 6
L Pfad von Daten auf Server über FileChooseDialog Allgemeine Java-Themen 5
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
E Server Client Audio Allgemeine Java-Themen 6
E Server Client Audio Allgemeine Java-Themen 0
Jose05 Speicherung auf einem Server Allgemeine Java-Themen 1
D Live-Scripting im Server Allgemeine Java-Themen 6
Monokuma Threadproblem mit Sockets und Server Allgemeine Java-Themen 7
T imagej-server NullPointerException Allgemeine Java-Themen 1
TonioTec Api für Datenaustausch zwischen Client und Server Allgemeine Java-Themen 0
W Server-Thread schreibt nicht alle Dateien Allgemeine Java-Themen 6
C Java RMI Client - Server Allgemeine Java-Themen 0
B Datei/Ordner auf Server zugreifen/erstellen Allgemeine Java-Themen 2
M TomEE auf Windows Server 2016 installieren Allgemeine Java-Themen 4
bueseb84 Git : Mehrere Server verwenden Allgemeine Java-Themen 3
P Am Application Server - Selbe files aber trotzdem CNF Allgemeine Java-Themen 2
KeexZDeveoper Zugriff auf Methoden vom Server Allgemeine Java-Themen 7
J Java - hoher Ramverbraucht auf WTS Server Allgemeine Java-Themen 8
C TCP Server und BufferedReader Leerstring im Stream? Allgemeine Java-Themen 5
C Logfile upload zu einem externen filezilla sftp server Allgemeine Java-Themen 6
S Simples Client Server Setup in Java Allgemeine Java-Themen 4
K Server mieten, Berechnungen darauf ausführen Allgemeine Java-Themen 14
Anfänger2011 Java Server oder lieber was anderes Allgemeine Java-Themen 16
F Best Practice Server und Clients Allgemeine Java-Themen 10
E JavaFX RMI extrem langsam wenn Server nicht läuft Allgemeine Java-Themen 5
D Best Practice Java Application Server , Docker oder was? Allgemeine Java-Themen 15
L Suche nach CalDav Server API Allgemeine Java-Themen 0
C Hang Man Server Client Allgemeine Java-Themen 3
C Hang man mit Server/Client Allgemeine Java-Themen 2
K Classpath JDBC Driver auf Server Allgemeine Java-Themen 4
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
I Installer, der JAVA EE Server und DB installiert Allgemeine Java-Themen 10
M Kapselung JasperReports Server und Java Allgemeine Java-Themen 5
P Java Fehler auf Win2008 Server java.io.FilePermission IE8 Version JRE 1.7.0_51 Allgemeine Java-Themen 7
M Dateien aus einem Verzeichnis auf einem Server auflisten Allgemeine Java-Themen 5
M Checksummenprüfung bei Client Server kommunikation Allgemeine Java-Themen 3
C Mit Pc Awendungen auf Server starten Allgemeine Java-Themen 8
B Input/Output Server Startet, Jedoch Kein Output. Allgemeine Java-Themen 1
E Socket Client-Server-Programmierung Allgemeine Java-Themen 44
T Java Streaming-Server & Streaming-Client Allgemeine Java-Themen 4
R Fragen zu Server + UI Allgemeine Java-Themen 2
0 Lösungsweg Client Server Kommunikation Fehlermeldung ausgeben Allgemeine Java-Themen 12
D Client / Server Allgemeine Java-Themen 23
D Player Objekt - Frame über Server anzeigen lassen. Allgemeine Java-Themen 3
U AWT simulierter Tastendruck auf Virtual Server Allgemeine Java-Themen 7
Z Socket [Chatprogramm] Nachrichten vom Server anzeigen lassen Allgemeine Java-Themen 6
E Methoden Server Benutzer abfrage Allgemeine Java-Themen 2
N COM Server ansteuern / KISSsoft Allgemeine Java-Themen 3
N URLConnection - Server abgeschaltet Allgemeine Java-Themen 2
A Parser verursacht Speicherprobleme auf Server Allgemeine Java-Themen 2
T Mit Java auf Dateien zugreifen die auf einem Server liegen Allgemeine Java-Themen 5
J Problem beim Auslesen einer Datei vom Server Allgemeine Java-Themen 4
T jar Archiv auf Server ausführen Allgemeine Java-Themen 3
J Application Server Allgemeine Java-Themen 2
A Input/Output Applet-Zugriff auf PHP-Schnittstelle (externer Server) Allgemeine Java-Themen 22
C game-server GUI erstellen Allgemeine Java-Themen 13
Developer_X Java FTP - Ordner auf Server erstellen Allgemeine Java-Themen 7
C Java Server Pages Problem Allgemeine Java-Themen 6
M Server-Responds testen, Code-Redundanz Allgemeine Java-Themen 3
T JPA Entity im Client-Server-Umfeld Allgemeine Java-Themen 19
C Primzahlen Server Allgemeine Java-Themen 3
S FTP Gezippte Datei von FTP Server downloaden Allgemeine Java-Themen 24
T Zeit von einem Server/Webseite auslesen und in eigener GUI anzeigen Allgemeine Java-Themen 6
B verbindung mit exchange server Allgemeine Java-Themen 3
AlexSpritze Alle Domains oder FQDN von einem Server erfragen? Allgemeine Java-Themen 2
H SwingWorker statt Thread für einen Server Allgemeine Java-Themen 2
D Versuch Server - Client anwendung Allgemeine Java-Themen 9
M Frage zum Auslesen einer Datei auf nem Server Allgemeine Java-Themen 4
T Welcher Server? JSP und Client-Anwendung Allgemeine Java-Themen 4
Final_Striker Datei vom Server bekommen Allgemeine Java-Themen 2
H Server Threaded machen. Port-Problem Frage Allgemeine Java-Themen 2
W programm auf server Allgemeine Java-Themen 5
C Java Polling, Server Prozedur oder doch Datenbank? Allgemeine Java-Themen 4
MQue Server- Thread Client Allgemeine Java-Themen 2
S Datei auf Server mit lokaler Datei vergleichen Allgemeine Java-Themen 4
J J2EE Server für EJB Container Allgemeine Java-Themen 8
D design client server Allgemeine Java-Themen 10
I Persistenz ohne App-Server? Allgemeine Java-Themen 6
O binärer Suchbaum mit client server., objekte speichern. Allgemeine Java-Themen 2
0 kein Java unter Server 2008 ? Allgemeine Java-Themen 3
G Proxy- Server setzen Allgemeine Java-Themen 2
G Preise am Server verändern Allgemeine Java-Themen 4
M Applet Servlet Kommunikation ein Problem bei externem Server Allgemeine Java-Themen 3
J Java zugriff auf Exchange Server Allgemeine Java-Themen 10
MQue FTP Server/ Datei ablegen Allgemeine Java-Themen 4
F Java Server VM/ Client VM Allgemeine Java-Themen 7
J java + rmi + not found in gnu.java.rmi.server Allgemeine Java-Themen 7
T Socket Server Anwendung - Empfang eines Byte-Arrays Allgemeine Java-Themen 7
A Client/Server-Anwendung Allgemeine Java-Themen 3
P Server für Java- Programme Allgemeine Java-Themen 8
S SERVER.XML Allgemeine Java-Themen 3
G Gelöst: ZIP File vom FTP Server entpacken Allgemeine Java-Themen 3
T Proxys: Idee für den Callback vom Server zum Client? Allgemeine Java-Themen 3
M Textdatei auslesen / schreiben (Server) Allgemeine Java-Themen 9
B Möglichkeiten ein Java Programm auf einem Server auszuführen Allgemeine Java-Themen 30
M Eigenes Java-Server-Programm unter Linux steuern? Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben