cfircoo
cfircoo

Reputation: 439

How to get input into jtext file from different class

I am making chat app with publisher and subscriber I got two class one for the chat frame and one is chat member's class. The member class get the message from jtextfield and the chat member publisher send it back to jtextarea.

I get difficult to get back the text to the jtextarea from the subscriber MessageListener

@Override
public void onMessage(Message m)
{
    try
    {
        TextMessage textMessage = (TextMessage) m;
        System.out.println("Received:" + textMessage.getText());
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

MessageListener listener = new MessageListener()
{
    @Override
    public void onMessage(Message m)
    {
        try
        {
            TextMessage textMessage = (TextMessage) m;
            System.out.println("Received:" + textMessage.getText());
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
};

private void sendChatBattonActionPerformed(java.awt.event.ActionEvent evt) { 
   String empty=""; 
   String message= inputChatText.getText(); 
   if (message.equals(empty)){ 
       inputChatText.setText(""); 
       inputChatText.requestFocus(); 
   } else { 
       inputChatText.setText(""); 
       try { 
           String newMessage=userName+"~"+message+"~chat"; 
           sendMessage(newMessage); 
       } catch (JMSException ex) {
           Logger.getLogger(chatFrame.class.getName()).log(Level.SEVERE, null, ex);
       }
    }
}

Thanks.

Upvotes: 2

Views: 319

Answers (1)

mprabhat
mprabhat

Reputation: 20323

With the code snippet provided this is what I understand, To append text in the text area use append.

@Override
public void onMessage(Message m) {
    try {
        TextMessage textMessage = (TextMessage) m;
        System.out.println("Received:" + textMessage.getText());
        jTextArea.apped(textMessage.getText());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Say your class which acts as the Chat Frame is called ChatFrame and has a MessageListener, your code in that case will look like this:

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.TextMessage;
import javax.swing.JTextArea;


public class ChatFrame {
    JTextArea textArea = null;

    void init(){
        //create and show UI here
    }

    class MessageListener implements javax.jms.MessageListener {
        @Override
        public void onMessage(Message arg0) {
            TextMessage textMessage = (TextMessage)arg0;
            try {
                textArea.append(textMessage.getText());
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
    }
}

2nd Approach where your ChatFrame and MessageListener are in two separate Java Source file, your code can look like below:

ChatFrame

import javax.swing.JTextArea;

public class ChatFrame {
    JTextArea textArea = null;

    void init(){
        //create and show UI here

        //Also start your message listener and give it the reference of textArea to be updated
        MessageListener messageListener = new MessageListener(this.textArea);
    }
}

MessageListener

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.TextMessage;
import javax.swing.JTextArea;


public class MessageListener implements javax.jms.MessageListener {

    private JTextArea textArea = null;

    public MessageListener(JTextArea textArea){
        this.textArea = textArea;
        createConnection();
    }

    private void createConnection(){
        //Create your JMS Connection and add yourself as subscriber
    }

    @Override
    public void onMessage(Message arg0) {
        TextMessage textMessage = (TextMessage)arg0;
        try {
            textArea.append(textMessage.getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

Upvotes: 2

Related Questions