简体   繁体   English

JTextfield未在GUI中动态更新

[英]JTextfield not updating dynamically in GUI

I am developing application i which local client sends info to server and server has GUI fields such as name,email and phone number the code is showing the text is updated of textfield but it is not appearing in GUI. 我正在开发本地客户端向服务器发送信息的应用程序i,服务器具有GUI字段,例如名称,电子邮件和电话号码,代码显示文本已更新为textfield,但它没有出现在GUI中。 Here is code 这是代码

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;

 }

The form that you are showing is not the same form that you are updating. 您显示的表单与您正在更新的表单不同。

You create the form to show here: 您创建要在此处显示的表单:

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

And the form to update a line later as 以及稍后更新一行的表单

evensoft n1=new evensoft();

In order to fix this, you should instantiate only one form and use it in both places: 为了解决这个问题,您应该只实例化一个表单并在两个地方使用它:

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);
                }
            });
        }
        // ...
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM