LayoutManager Clientfenster ins Design einbinden

W

Wichtige Frage

Gast
Hallo ihr!
Ich habe in 2 Wochen eine Vorführung über mein Projekt Messenger. D.h. ich habe ein Messenger programmiert mit Design und Client und Server und mein Problem liegt jetzt beim einbinden vom Client ins Design. Wenn ich den Client einzeln teste und sende eine Nachricht einem anderen Client dann geht die kommunikatioun, es kommt also etwas auf der anderen Seite an. Wenn ich den Client nun in meinen Design einbinde dann geht die Kommunikation nicht mehr! Wo kann das Problem liegen?
Das Design sieht so aus dass man eine Messeneroberfläche hat mit einem grossen Knopf wo "Click here to chat" steht.
Klickt man auf den Button soll ein Actionlistener die Clientoberfläche aufrufen:


public void actionPerformed(ActionEvent arg0)
{
if ("Click here to chat".equals(arg0.getActionCommand()))
{
client1 mlm= new client1();//client1 aufrufen
}

}
Kann man den Client auf dieser Art und Weise einfach einbinden?


Für jede antwort wäre ich dankbar!!
 

zerix

Mitglied
Hallo,

das lässt sich so leicht nicht sagen. Wir kennen deinen Code ja nicht und wissen nicht wie was gesendet wird.

Ich würde aber nicht bei dem Button-Klick erst einen Client anlegen, sondern beim Start des Clients. Für das Senden wird dann die entsprechende Funktion aufgerufen, beim Client.

Gruß

zerix
 
W

Wichtige Frage

Gast
Das Problem ist, das ganze Projekt besteht aus 4 Programmen und die kann ich schlecht hierhin posten...



Aber der Client wird erst gestartet wenn überhaupt der Button betätigt wurde oder wie soll ich jetzt das verstehen?
 
G

Gast2

Gast
public void actionPerformed(ActionEvent arg0)
{
if ("Click here to chat".equals(arg0.getActionCommand()))
{
client1 mlm= new client1();//client1 aufrufen
}

}

Klassen schreibt man groß ;)...

So wird bei dem Click des Button eine neue Client Instanz angelegt und den kannst du auch nur in der Methode verwenden.

Irgendwann muss dein Chat auch irgendwann mal etwas sende und empfangen wo ist den der Teil des Codes?
 

zerix

Mitglied
Wie gesagt wir kennen deinen Code nicht.
Ich habe es jetzt so verstanden, dass das Design die Oberfläche ist und client die Funktionalität zum Senden und Empfangen besitzt. Da man ja nicht immer einen neuen Client anlegt, da der sich ja mal mit dem Server verbunden hat, legt man diesen eigentlich beim Öffnen der GUI an.

Gruß

zerix
 
W

Wichtige Frage

Gast
Hier ist mal das Programm des Client1:

package Main;

import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class client1 extends JFrame implements ActionListener
{
JLabel l1=new JLabel("Enter your Name:");//Label erzeugen und Namen geben
JLabel l2=new JLabel("Set IP to chat:");//Label erzeugen und Namen geben
JLabel l3=new JLabel("Enter the text:");//Label erzeugen und Namen geben
JLabel lserver=new JLabel("Set Server - IP:");//Label erzeugen und Namen geben
JTextField t1=new JTextField();//Textfeld erzeugen
JTextField t2=new JTextField();//Textfeld erzeugen
JTextField t3=new JTextField();//Textfeld erzeugen
JTextArea t4=new JTextArea();//Textarea erzeugen
JTextField tserver=new JTextField();//Textfeld erzeugen
JScrollPane jsp=new JScrollPane(t4);//Scrollpane erzeugen und in t4 einbinden
DatagramSocket so,so1;//Typ festlegen von Datagramsockets
DatagramPacket sp,rp;//Typ festlegen von Datagrampacket

//kontruktor
client1()
{
super("Roberto's Live Messenger");//Client1-Frame benennen

setLayout(null);//Layout auf null setzen

l1.setBounds(20,20,120,20);//Label Koordinaten einstellen
t1.setBounds(120,20,150,20);//Textfeld Koordinaten einstellen
l2.setBounds(20,50,90,20);//Label Koordinaten einstellen
t2.setBounds(120,50,102,20);//Textfeld Koordinaten einstellen
lserver.setBounds(20,80,102,20);//Label Koordinaten einstellen
tserver.setBounds(120,80,102,20);//Textfeld Koordinaten einstellen
l3.setBounds(20,110,100,20);//Label Koordinaten einstellen
t3.setBounds(20,140,250,20);//Textfeld Koordinaten einstellen

jsp.setBounds(20,170,250,100);//Scrollpane Koordinaten einstellen

add(l1);//Label in Frame setzen
add(l2);//Label in Frame setzen
add(l3);//Label in Frame setzen
add(t1);//Textfeld in Frame setzen
add(t2);//Textfeld in Frame setzen
add(t3);//Textfeld in Frame setzen
add(lserver);//Label in Frame setzen
add(tserver);//Textfeld in Frame setzen
add(jsp);//Scrollpane in Frame setzen

t3.addActionListener(this);//Actionlistener auf Textfeld3 setzen

setVisible(true);//Frame sichtbar machen
setSize(300,350);//Grösse von Frame einstellen
setResizable(false);//Frame ist nicht vergrösser-/verkleinerbar

try//Im Fall wenn so oder so1 besetzt sein sollten oder wenn ein anderer Fehler auftritt soll folgendes geschehen
{
so=new DatagramSocket(); // send
so1=new DatagramSocket(10000); // receive
}
catch(Exception e){}
}

/**
* Wird in t3 etwas eingegeben dann wird die Methode senddata aufgerufen und der Text wird gesendet und in t4 gesetzt.
* Anschliessend wird t3 wieder gelöscht.
*/

public void actionPerformed(ActionEvent e)
{
senddata(e.getActionCommand());//aufrufen von senddata mit parameter s(eingegebener Text) (s = String)
t3.setText("");//Text von t3 löschen
}

/**
* senddata ist eine Methode die den zu sendenden Text aufbereitet und versendet
* @param s
*/

public void senddata(String s)
{//method senddata
try
{
String st=s+"¦Client1¦"+t2.getText()+"¦"+t1.getText();//zusammenbauen des zu schickenden Strings
byte data[]=st.getBytes();//reservierung der bytes
sp=new DatagramPacket(data,data.length,InetAddress.getByName(tserver.getText()),20000);//zusammensetzen des Paketes
so.send(sp);//senden des paketes
t4.append(t1.getText() + ": " + s + "\n");//was man geschrieben hat wird angezeigt
}
catch(Exception e){}
}

/**
* ???????????????
*/

public void waitdata()
{
while(true)
{//wait method
try
{
byte data[]=new byte[100];//reservieren der bytes
rp=new DatagramPacket(data,data.length);//zusammensetzen des pakets
so1.receive(rp);//bekommt paket
t4.append(new String(rp.getData(),0,rp.getLength())+"\n");//schreiben des empfangenen paketes
}
catch(Exception e){

}
}
}

public static void main(String args[])
{
client1 c=new client1();//Neues Objekt c mit dem Typ client1 wird erstellt
c.waitdata();//warten auf daten
}
}




Im Grunde gesehen ist mein Messenger so aufgebaut: Er besteht ja wie schon gesagt aus 4 Programmen:
1.Mainclass, diese ruft den LoginPanel auf, durch klicken auf den Login Button öffnet sich ein neues Fenster mit der Benutzeroberfläche
2.MainListMenu ist, sozusagen zusammen mit 3. MainList, die Benutzeroberfläche, nur dass 3.MainList ein Panel ist dass den ChatButton enthält und ins 2.MainListMenu(=Frame= eingebunden wird. Das MainListMenu hat oben ein Barren mit Menüs.
Und anschliessend 4. der Client1 den ich euch hier hingepostet habe.


Kurzgefassen: Mainclass ruft durch betätigen des LoginButtons das MainListmenu auf.Das MainListMenu enthalt gleichzeitig den Panel MainList, und in Mainlist wird der client1 aufgerufen.


Damit man dann zwischen zwei clients kommunizieren kann habe ich nocheinmal genau dasselbe programm von 1. - 4. nur dass der client1 nun client2 heisst und mit den Sockets an den Server angepasst ist.


Nun zum Server: Im Grunde gesehen tut der Server nichts anderes als die Daten weiterzuleiten oder zu stoppen zwischen den beiden Clients, mehr nicht. er besteht aus einem Start und Stop button.
 

zerix

Mitglied
Also der Client ist schon das Fenster mit der Chat-Funktionalität?
Dann kann man das schon so aufrufen, wie du oben geschrieben hast.

So können aber nur Nachrichten empfangen werden, wenn das Chatfenster geöffnet ist. Wenn das so gewollt ist, ok.

Gruß

zerix
 
W

Wichtige Frage

Gast
Das will ich ja auch so, man drückt auf den Chat Button, und das Chat Fenster öffnet sich und man kann chatten. Aber es geht nicht!!! Ich habe client1 und client2 einzeln getestet in dem ich sie nicht in mein grossen Programm hier eingebunden habe, habe sie also beide einzeln gestartet, hab den server gestartet, und die kommunikation klappt einwandfrei. sobald ich sie ins grosse Programm einbinde geschieht nichts! Es kommt einfach nichts bei dem anderen client an...
 

zerix

Mitglied
Ich sehe jetzt nur den Code von deinem client1. Ich würde deshalb einfach mal behaupten, dass es an dem fehlenden Aufruf von waitdata liegt.
Diesen hast du nämlich in der main-Methode gemacht.
Das ganze solltest du aber in einen anderen Thread auslagern, da du sonst den EDT blockierst.

Gruß

zerix
 

zerix

Mitglied
Da könntest du entweder die Klasse Thread überschreiben oder du nimmst den SwingWorker.

Java:
public void actionPerformed(ActionEvent arg0)
{
if ("Click here to chat".equals(arg0.getActionCommand()))
{
new SwingWorker<Void, Void>(){

protected Void doInBackground(){
   client1 mlm= new client1();//client1 aufrufen
   mlm.waitdata();
return null;
}
}.execute();
}

}

Java:
public void actionPerformed(ActionEvent arg0)
{
if ("Click here to chat".equals(arg0.getActionCommand()))
{
new Thread(){

public Void run(){
   client1 mlm= new client1();//client1 aufrufen
   mlm.waitdata();
}
}.start();
}

}

Den Code hab ich hier gerade schnell geschrieben. Kann also Syntax-Fehler enthalten.

Schau mal hier
Infos zu Thread
Java ist auch eine Insel – 9 Threads und nebenläufige Programmierung

SwingWorkerDemo
http://www.java-forum.org/blogs/tfa/25-snippet-swingworker.html

Gruß

zerix
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Button / Design Ideen AWT, Swing, JavaFX & SWT 2
M JavaFX kann man da noch was am code vereinfachen design technisch sieht nicht richtig aus... AWT, Swing, JavaFX & SWT 15
R Swing Design des oberen Balkens in JFrame AWT, Swing, JavaFX & SWT 2
L JavaFX GUI Design AWT, Swing, JavaFX & SWT 6
W WindowBuilder / Design-Vorschau schneidet den Rand ab AWT, Swing, JavaFX & SWT 0
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
SchmidiMC Swing Vorschläge für ein Design AWT, Swing, JavaFX & SWT 5
das_leon AWT Button Design ändern AWT, Swing, JavaFX & SWT 5
it_is_all Swing Button, ComboBox,... -- Unterschied: NetBeans Design <-> Ausführung AWT, Swing, JavaFX & SWT 2
F Design-Anzeige im Windowbuilder AWT, Swing, JavaFX & SWT 3
K GridBagLayout mit reponsive Design AWT, Swing, JavaFX & SWT 2
B Design Umsetzung AWT, Swing, JavaFX & SWT 1
M Swing JComboBox eigenes Design AWT, Swing, JavaFX & SWT 3
L LookAndFeel Eigenes Design für die Applikation AWT, Swing, JavaFX & SWT 4
A JavaFX Hilfe beim Design eines Quiz AWT, Swing, JavaFX & SWT 2
T JavaFX "DefaultButton"-Design ändern AWT, Swing, JavaFX & SWT 8
T JavaFX Flexible Layouts dynamisch erstellen / Design-Inspirationen AWT, Swing, JavaFX & SWT 8
T Programm im METRO Design? AWT, Swing, JavaFX & SWT 1
N GUI Design ohne GUIDesigner AWT, Swing, JavaFX & SWT 10
D GWT Design AWT, Swing, JavaFX & SWT 0
B Custom JTabbedPane-Tab-Design AWT, Swing, JavaFX & SWT 2
U WindowBuilder "Design-Tab" AWT, Swing, JavaFX & SWT 2
P LayoutManager Design meines Projekts (hätte wer zeit?) AWT, Swing, JavaFX & SWT 9
G Eclipse: Design Tab wird nicht mehr angezeigt AWT, Swing, JavaFX & SWT 4
M Design in Java umsetzen AWT, Swing, JavaFX & SWT 3
Tsuna JButtons in Apple-Design AWT, Swing, JavaFX & SWT 4
ARadauer Wenig Material zum Thema: Design, Layout, Usability von Swing Anwendungen AWT, Swing, JavaFX & SWT 11
J LayoutManager Welchen Layout/Design-Manager? AWT, Swing, JavaFX & SWT 4
B LayoutManager GUI-Design: eventuelle Alternativen zum Verschachteln + Ansprechen von JPanel()? AWT, Swing, JavaFX & SWT 2
F JSlider Design ändern AWT, Swing, JavaFX & SWT 6
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
G Grundsatzfrage GUI-Design AWT, Swing, JavaFX & SWT 6
R Zugriff auf Model im MVC-Design aus SwingWorker heraus AWT, Swing, JavaFX & SWT 3
tuttle64 Design für mehrere Sprachen in Swing AWT, Swing, JavaFX & SWT 15
L Eigene Design Oberfläche erstellen AWT, Swing, JavaFX & SWT 3
M Special design of Swing components AWT, Swing, JavaFX & SWT 14
KrokoDiehl Swing Design-Frage: eigenes Line-Wrapping AWT, Swing, JavaFX & SWT 5
T Design mit vielen Feldern AWT, Swing, JavaFX & SWT 2
D Design - View & Controller AWT, Swing, JavaFX & SWT 2
eskimo328 Moderne Swing GUI mit Web ähnlichem Design AWT, Swing, JavaFX & SWT 7
M Nochmal Swing, MVC und generelles Design AWT, Swing, JavaFX & SWT 2
S JTree Design Problem AWT, Swing, JavaFX & SWT 5
S Design problem AWT, Swing, JavaFX & SWT 2
K Design von verschiedenen Rechnern AWT, Swing, JavaFX & SWT 13
A Design Problem bei verschiedenen Oberflächen AWT, Swing, JavaFX & SWT 3
Steev Standard Design bei JFrame und AWT AWT, Swing, JavaFX & SWT 7
M Design von Elemente? AWT, Swing, JavaFX & SWT 16
T Allgemeine Frage - innovatives GUI Design AWT, Swing, JavaFX & SWT 6
P Swing-Komponenten - Standart-Windows Design? AWT, Swing, JavaFX & SWT 4
B Swing - Design Patterns AWT, Swing, JavaFX & SWT 3
S "Zerstörtes" gbl-Layout (Design) AWT, Swing, JavaFX & SWT 10
D professionelles GUI-Design als Skeleton Pro AWT, Swing, JavaFX & SWT 2
A Applikation mit Netbeans-Design AWT, Swing, JavaFX & SWT 4
R JDialog hat seltsames Design AWT, Swing, JavaFX & SWT 6
L Design-Probleme (Swing-Anfänger) AWT, Swing, JavaFX & SWT 6
M Look&Feel - Layout - GUI - Design - SAP LnF :) AWT, Swing, JavaFX & SWT 12
M Frage bzgl. Formular-Design. AWT, Swing, JavaFX & SWT 2
R Programm an Design anpassen. AWT, Swing, JavaFX & SWT 4
G Ikonli in Fat-Jar mit mehreren Icon-Packs einbinden AWT, Swing, JavaFX & SWT 5
T Stylesheet einbinden AWT, Swing, JavaFX & SWT 1
G JavaFX Bibliotheken modular einbinden AWT, Swing, JavaFX & SWT 9
T FXML Datei in Java Code einbinden: javafx.fxml.LoadException AWT, Swing, JavaFX & SWT 2
rtm007 Videos in JavaFX einbinden AWT, Swing, JavaFX & SWT 1
dtr84 JavaFX/OpenJFX mittels Apache Ivy einbinden (Java 11) AWT, Swing, JavaFX & SWT 18
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
B Notepad++ in die eigene GUI einbinden AWT, Swing, JavaFX & SWT 7
R JavaFX lässt sich nicht in Eclipse einbinden AWT, Swing, JavaFX & SWT 4
MiMa Album Cover in GUI einbinden AWT, Swing, JavaFX & SWT 3
J JavaFX CSS einbinden - Wieso will das einfach nicht!!! AWT, Swing, JavaFX & SWT 1
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
D JavaFX Einbinden einer .fxml AWT, Swing, JavaFX & SWT 1
C 3D Grafikdateien in Java einbinden? AWT, Swing, JavaFX & SWT 9
Sanni94 JavaFX Kann man eine Grafik in einen Text einbinden? AWT, Swing, JavaFX & SWT 2
M Kamera in Java Swing einbinden AWT, Swing, JavaFX & SWT 4
T GrafikDatei .png in GUI einbinden AWT, Swing, JavaFX & SWT 10
T Applet Applet in JFrame einbinden AWT, Swing, JavaFX & SWT 8
D SteelSeries in Netbeans als Drag-and-Drop einbinden AWT, Swing, JavaFX & SWT 0
M Datei mit Komponenten einbinden AWT, Swing, JavaFX & SWT 7
M JavaFX - Bild in Jar einbinden, sodass es auch außerhalb der IDE geladen wird. AWT, Swing, JavaFX & SWT 2
B Windowbuilder - Icon für Button einbinden AWT, Swing, JavaFX & SWT 2
BRoll Frame- Video einbinden machbar? AWT, Swing, JavaFX & SWT 6
S klasse einbinden funktioniert nicht AWT, Swing, JavaFX & SWT 6
J Swing in JavaFX einbinden AWT, Swing, JavaFX & SWT 3
A (Youtube-) Video in Swing GUI einbinden AWT, Swing, JavaFX & SWT 13
S HTML in Java einbinden AWT, Swing, JavaFX & SWT 4
L JavaFX in Java Einbinden AWT, Swing, JavaFX & SWT 2
T Applet in JSP einbinden AWT, Swing, JavaFX & SWT 4
F Applet JApplet per html einbinden - Main class kann nicht gefunden werden AWT, Swing, JavaFX & SWT 15
J Bilder in ausführbare jar einbinden AWT, Swing, JavaFX & SWT 7
N 2D-Grafik Bild einbinden AWT, Swing, JavaFX & SWT 4
B JTree mit Ordneransicht in JPanel einbinden AWT, Swing, JavaFX & SWT 4
M Programm in Jframe "einbinden" AWT, Swing, JavaFX & SWT 7
C SWT probleme beim einbinden von Images AWT, Swing, JavaFX & SWT 2
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
A Videosignal in Java einbinden AWT, Swing, JavaFX & SWT 4
F fertige JApplets in Desktop Application einbinden AWT, Swing, JavaFX & SWT 4
M Browser in Programm einbinden AWT, Swing, JavaFX & SWT 4
L Applet In HTML einbinden klappt einfach nicht AWT, Swing, JavaFX & SWT 5
D Applet Methode in Timer einbinden AWT, Swing, JavaFX & SWT 6
E Swing JMenu in GUI einbinden AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben