java - Text not visible in my multi client chat GUI application? -
edit have implemented multi client chat server transform emergency response 'server-clients' ad hoc network. currently, program , running in chat window typing in text box not appearing in eventlog (neither of clients or server). don't know causing error?
how should resolve issue?
here part of code:
public class servergui extends jframe implements actionlistener, windowlistener{ private static final long serialversionuid =1l; // stop , start buttons private jbutton stopstart; // jtextarea communication interface private jtextarea commwin, eventlog; // port number private jtextfield tport; // server private vserver serv; // server constructor // // // // commwin = new jtextarea(120,120); commwin.seteditable(false); appendcomm("vanet communication window.\n"); middle.add(new jscrollpane(commwin)); eventlog = new jtextarea(120,120); eventlog.seteditable(false); appendevent("events log.\n"); middle.add(new jscrollpane(eventlog)); add(middle); // // // } // append message 2 jtextarea void appendcomm(string str){ commwin.append(str); commwin.setcaretposition(commwin.gettext().length() -1); } void appendevent(string str){ eventlog.append(str); eventlog.setcaretposition(commwin.gettext().length() -1); } // start or stop when clicked public void actionperformed(actionevent e){ if(serv !=null){ serv.stop(); serv = null; tport.seteditable(true); stopstart.settext("start"); return; } int port; try{ port = integer.parseint(tport.gettext().trim()); } catch(exception ex) { appendevent("invalid port number"); return; } // create new server serv = new vserver(port, this); // , start thread new serverrunning().start(); stopstart.settext("stop"); tport.seteditable(false); } // entry point start server public static void main(string[] arg){ // start server @ default port new servergui(1234); } // in case x clicked, application closes // connection needs closed free port public void windowclosing(windowevent e){ if(serv != null){ try{ serv.stop(); } catch(exception ec) {} serv = null; } // dispose frame dispose(); system.exit(0); } // ignore other windowlistener methods // thread run server class serverrunning extends thread { public void run(){ serv.start(); // in case server fails stopstart.settext("start"); tport.seteditable(true); appendevent("server crashed\n"); serv = null; } } } some parts of clientgui.java :
// // public class clientgui extends jframe implements actionlistener { private static final long serialversionuid =1l; private jlabel label; private jtextfield tfield; private jtextfield tfieldserv, tport; private jbutton signin, signoff, activenodes; private jtextarea tarea; private boolean connected; private vclient client; private int defaultport; private string defaulthost; // constructor receiving socket number clientgui(string host, int port){ // // // upper panel jpanel upperpanel = new jpanel(new gridlayout(3,1)); // server name , port number jpanel serverport = new jpanel(new gridlayout(1,5, 1,3)); // 2 jtextfield default value server address , port number tfieldserv = new jtextfield(host); tport = new jtextfield("" + port); tport.sethorizontalalignment(swingconstants.right); serverport.add(new jlabel("server address: ")); serverport.add(tfieldserv); serverport.add(new jlabel("port number: ")); serverport.add(tport); serverport.add(new jlabel("")); // adds server , port fields gui upperpanel.add(serverport); // label , textfield label = new jlabel("enter username below", swingconstants.center); upperpanel.add(label); tfield = new jtextfield("anonymous"); tfield.setbackground(color.white); upperpanel.add(tfield); add(upperpanel, borderlayout.north); // central panel tarea = new jtextarea("vanet disaster management\n", 120, 120); jpanel middlepanel = new jpanel(new gridlayout(2,2)); middlepanel.add(new jscrollpane(tarea)); tarea.seteditable(false); add(middlepanel, borderlayout.center); // 3 buttons signin = new jbutton("sign in"); signin.addactionlistener(this); signoff = new jbutton("sign off"); signoff.addactionlistener(this); signoff.setenabled(false); // have sign in before being able sign off activenodes = new jbutton("active clients"); activenodes.addactionlistener(this); activenodes.setenabled(false); // have sign in before being able see active client list // lower panel jpanel lowerpanel = new jpanel(); lowerpanel.add(signin); lowerpanel.add(signoff); lowerpanel.add(activenodes); add(lowerpanel, borderlayout.south); setdefaultcloseoperation(exit_on_close); setsize(600,600); setvisible(true); tfield.requestfocus(); } // append text in text area void append(string str){ tarea.append(str); tarea.setcaretposition(tarea.gettext().length() -1); } // called gui if connection fails void connectionfailed(){ signin.setenabled(true); signoff.setenabled(false); activenodes.setenabled(false); label.settext("enter username below"); tfield.settext("anonymous"); // reset port number , host name tport.settext("" +defaultport); tfieldserv.settext(defaulthost); // let client modify them tfieldserv.seteditable(false); tport.seteditable(false); // don't react carriage return after username tfield.removeactionlistener(this); connected = false; } // button or jtextfield clicked public void actionperformed(actionevent e){ object obj = e.getsource(); if(obj == signoff) { client.sendmsg(new commmessage(commmessage.signoff, "")); return; } if(obj == activenodes) { client.sendmsg(new commmessage(commmessage.activenodes, "")); return; } if(connected){ client.sendmsg(new commmessage(commmessage.message, "")); tfield.settext(""); return; } if(obj == signin) { // // // // } // create new client gui client = new vclient(serv, port, username, this); if(!client.start()) return; tfield.settext(""); label.settext("enter message below"); connected = true; // disable sign in button signin.setenabled(false); // enable 2 buttons signoff.setenabled(true); activenodes.setenabled(true); // disable server , port jtextfield tfieldserv.seteditable(false); tport.seteditable(false); // when client enter message tfield.addactionlistener(this); } } // start whole thing public static void main(string[] args) { new clientgui("localhost", 1234); } } let me know in case other files needed understand issue! files have:
commmessage.java vserver.java vclient.java servergui.java clientgui.java additional question: far chat server used starting point (as i'm new java programming) want build entire application here has central server (doing of work) , multiple clients communicating bi-directionally. that, need incorporate authentication well. idea is: remote client send connection request, server opens socket, client sends first packet containing name, ip, , port number. server should match pre-stored list of registered clients , if 1 of them, allows communication move forward. otherwise terminates connection, kindly suggest how can implement in code.
p.s. 'v' stands vanet (vehicular ad hoc network - project theme)
i'll respond main question, there typo in code
void appendevent(string str){ eventlog.append(str); eventlog.setcaretposition(commwin.gettext().length() -1); // ^^^^ typo } should be
void appendevent(string str){ eventlog.append(str); eventlog.setcaretposition(eventlog.gettext().length() -1); } wiki
Comments
Post a Comment