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