java - JButton freezes when sending string from server -


i new java , trying create simple game accepts structured english commands, parses them , displays them on grid. lan game , commands need sent other computer parsed , displayed.

i have finished , written parsing code, , client/server code, stuck gui , interaction server , client. right gui accepts string input, , sends no issues, when want send second string, button has greyed out , cant write else.

gui code:

public class serverplayergamemain extends javax.swing.jframe implements runnable { private gridgenerator gg = new gridgenerator(10,10);             public serverplayerparsing serverpc = new serverplayerparsing(); public studentserver serversend = new studentserver();  thread run; public serverplayergamemain() {     initcomponents();     run = new thread(this);     run.start(); }  public void run(){    gg.framegen();  } @suppresswarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="generated code">                           private void initcomponents() {      command = new javax.swing.jtextfield();     jlabel1 = new javax.swing.jlabel();     jtogglebutton1 = new javax.swing.jtogglebutton();      setdefaultcloseoperation(javax.swing.windowconstants.exit_on_close);      command.addactionlistener(new java.awt.event.actionlistener() {         public void actionperformed(java.awt.event.actionevent evt) {             commandactionperformed(evt);         }     });     command.addkeylistener(new java.awt.event.keyadapter() {         public void keypressed(java.awt.event.keyevent evt) {             commandkeypressed(evt);         }     });      jlabel1.settext("enter command:");      jtogglebutton1.settext("add");     jtogglebutton1.addactionlistener(new java.awt.event.actionlistener() {         public void actionperformed(java.awt.event.actionevent evt) {             jtogglebutton1actionperformed(evt);         }     });      javax.swing.grouplayout layout = new javax.swing.grouplayout(getcontentpane());     getcontentpane().setlayout(layout);     layout.sethorizontalgroup(         layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)         .addgroup(layout.createsequentialgroup()             .addgap(29, 29, 29)             .addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)                 .addcomponent(jlabel1)                 .addgroup(layout.createsequentialgroup()                     .addcomponent(command, javax.swing.grouplayout.preferred_size, 204, javax.swing.grouplayout.preferred_size)                     .addgap(18, 18, 18)                     .addcomponent(jtogglebutton1, javax.swing.grouplayout.preferred_size, 76, javax.swing.grouplayout.preferred_size)))             .addcontainergap(27, short.max_value))     );     layout.setverticalgroup(         layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)         .addgroup(layout.createsequentialgroup()             .addcontainergap(180, short.max_value)             .addcomponent(jlabel1)             .addpreferredgap(javax.swing.layoutstyle.componentplacement.related)             .addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.baseline)                 .addcomponent(command, javax.swing.grouplayout.preferred_size, 42, javax.swing.grouplayout.preferred_size)                 .addcomponent(jtogglebutton1))             .addgap(58, 58, 58))     );      pack(); }  private void jtogglebutton1actionperformed(java.awt.event.actionevent evt) {                                                        serverpc.validate(command.gettext());         string commandmessage = command.gettext();         serversend.run(commandmessage); }                                                 // variables declaration - not modify                      private javax.swing.jtextfield command; private javax.swing.jlabel jlabel1; private javax.swing.jtogglebutton jtogglebutton1; // end of variables declaration                    } 

server code:

import java.awt.point; import javax.swing.*;   import javax.swing.event.listselectionevent; import javax.swing.event.listselectionlistener; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; public class studentserver{ static serversocket serversocket; static socket socket; static printwriter printwriter; static bufferedreader bufferedreader; static thread thread; console console = new console();   public serverplayergamemain gm;     public static void main(string args[]) throws exception{ } public void run(string commandmessage){     while(true){         try{             printwriter.println(commandmessage+"\n");             string input = bufferedreader.readline();//reads input textfield             console.readline("client message: "+input);//append textarea         }catch(exception e){}     } }     public void serverstartactionperformed() {     system.out.println("server has started!");     try{         serversocket = new serversocket (8888); // socket server         socket = serversocket.accept(); // waiting socket accept client         joptionpane.showmessagedialog(null, "your opponent has connected!", "opponent connection!", joptionpane.information_message);         gm = new serverplayergamemain();         gm.setvisible(true);         bufferedreader = new bufferedreader(new inputstreamreader(socket.getinputstream())); // reads line input streamer         printwriter = new printwriter(socket.getoutputstream(),true);     }catch(ioexception | headlessexception e){         system.out.println("server not running!"); //print message if server not running     }  } } 

client code:

import java.io.*; import java.net.*; import javax.swing.joptionpane; public class studentclient { static socket socket; static printwriter printwriter; static bufferedreader bufferedreader; static thread thread;  public clientplayergamemain gm;  public void clients(string address) {     try{         socket=new socket("localhost",8888);//socket client         //below line reads input inputstreamreader         bufferedreader=new bufferedreader(new inputstreamreader(socket.getinputstream()));         //below line writes output outputstream         printwriter=new printwriter(socket.getoutputstream(),true);         joptionpane.showmessagedialog(null, "connected server successfully", "success", joptionpane.information_message);         gm = new clientplayergamemain();         gm.setvisible(true);                     system.out.println("connected");//debug code     }catch(exception e){        joptionpane.showmessagedialog(null, "no connection server", "error", joptionpane.error_message);         system.out.println("not connected");     }     thread = new thread();     thread.start();  } public static void run(string commandmessage){         while(true){             try{                    console console = new console();               printwriter.println(commandmessage);                                 string input = bufferedreader.readline();                 system.out.println("from server:" +input);             }catch(exception e) {}         } } } 

there classes have left out grid generator has no effect on function of server/client , how interact.

please explain happening button, , why stops working after sending 1 string, , how can solve this.

call

run = new thread(this); run.start(); 

in

private void jtogglebutton1actionperformed(java.awt.event.actionevent evt) {      run = new thread(this);      run.start(); } 

and run method should be:

public void run(){     gg.framegen();      //...     serverpc.validate(command.gettext());     string commandmessage = command.gettext();     serversend.run(commandmessage);  } 

Comments

Popular posts from this blog

php - SPIP: From Tag directly to an article -

jquery - isAjaxRequest always return false -

ruby on rails - In a controller spec, how to find a specific tag in the generated view? -