2013-09-30 51 views
0

动态更新我开发的应用我这本地客户端发送信息给服务器和服务器具有图形用户界面领域,如姓名,电子邮件和电话号码的代码显示文本更新文本框的,但它不是在出现GUI。 这里是代码的JTextField没有GUI

public class evensoft extends javax.swing.JFrame { 


     private static final int port=8008; 
     private static ServerSocket serversocket; 
     private static Socket clientsocket; 
     private static InputStreamReader reader; 
     private static BufferedReader breader; 
     private static InputStreamReader InputStreamReader; 
     private static String message; 
     String msg; 

     public evensoft() 
     { 
      initComponents(); 

     } 


     @SuppressWarnings("unchecked") 
     // <editor-fold defaultstate="collapsed" desc="Generated Code">       



     public static void main(String args[]) 
     { 



      java.awt.EventQueue.invokeLater(new Runnable() 
      { 
       public void run() { 
        new evensoft().setVisible(true); 


       } 
      }); 
      evensoft n1=new evensoft(); 
      try 
      { 
      serversocket=new ServerSocket(port,0,InetAddress.getLocalHost()); 
      label.setText("Server IP: "+serversocket.getInetAddress()+ " port " +serversocket.getLocalPort()); 
      } 
      catch(IOException e) 
      { 
       e.printStackTrace(); 
      } 
      while(true) 
      { 
       try 
       { 
        clientsocket=serversocket.accept(); 
        reader=new InputStreamReader(clientsocket.getInputStream()); 
        breader=new BufferedReader(reader); 
        message=breader.readLine(); 
        char a[]=message.toCharArray(); 
        n1.formatmessage(a); 



       } 
       catch(IOException e1) 
       { 
        e1.printStackTrace(); 
       } 

      } 


     } 
     public void formatmessage(char[] a) 
     { 

       char[] Fname=new char[10]; 
       char[] lname=new char[50]; 
       char[] email=new char[50]; 
       char[] phone=new char[15]; 
       //Formatting meg string 

       String n1=new String(Fname); 
       String n2=new String(lname); 
       String n3=new String(email); 
       String n6=new String(phone); 

       System.out.println(n1); 
       System.out.println(n2); 
       System.out.println(n3); 
       System.out.println(n5); 
       System.out.println(n6); 

       Name.setText(n1.trim()+" "+n2.trim()); 
       Email.setText(n3.trim()); 
       Contact.setText(n6.trim()); 


       System.out.println(Name.getText()); 
       System.out.println(Email.getText()); 
       System.out.println(Contact.getText()); 



     } 
    public javax.swing.JTextField Contact; 
    public javax.swing.JTextField Email; 
    public javax.swing.JTextField Name; 

} 
+2

你的initComponents方法在哪里?此外,在Java中的约定是使用类名第一个字符大写:类名 – Nick

+0

此代码不能编译。 initcomponents()未在范围内声明。摆脱从套接字读取的东西。没有人可以轻松地复制。让它只使用静态值,看看它是否工作。简化示例。 – codethulhu

+0

该代码是遵从和它从客户端接收数据及其也更新通过的setText文本字段,但它不是在GUI显示 – MandarCT

回答

2

,你是显示是不是要更新的形式相同的形式。

您创建的形式显示在这里:

java.awt.EventQueue.invokeLater(new Runnable() 
{ 
    public void run() { 
     new evensoft().setVisible(true); 
    } 
}); 

和表单更新行以后作为

evensoft n1=new evensoft(); 

为了解决这个问题,你应该实例只有一种形式,并用它在这两个地方:

public static void main(String args[]) { 
    final evensoft f = new evensoft(); 

    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      f.setVisible(true); 
     } 
    }); 

    // ... 

    while(true) { 
     try { 
      clientsocket=serversocket.accept(); 
      reader=new InputStreamReader(clientsocket.getInputStream()); 
      breader=new BufferedReader(reader); 
      message=breader.readLine(); 
      final char a[]=message.toCharArray(); 

      java.awt.EventQueue.invokeLater(new Runnable() { 
       public void run() { 
        f.formatmessage(a); 
       } 
      }); 
     } 
     // ... 
    } 
}