【问题标题】:How to get input into jtext file from different class如何从不同的类输入文本文件
【发布时间】:2012-06-01 19:27:57
【问题描述】:

我正在与发布者和订阅者一起制作聊天应用程序 我有两个类,一个是聊天框架,一个是聊天成员的类。 成员类从 jtextfield 获取消息,聊天成员发布者将消息发送回 jtextarea。

我很难从订阅者 MessageListener 将文本返回到 jtextarea

@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);
       }
    }
}

谢谢。

【问题讨论】:

    标签: java swing jtextarea


    【解决方案1】:

    使用提供的代码 sn-p 这就是我所理解的,要在文本区域中附加文本,请使用 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();
        }
    }
    

    假设您作为聊天框架的类名为 ChatFrame 并且有一个 MessageListener,那么您的代码在这种情况下将如下所示:

    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();
                }
            }
        }
    }
    

    您的 ChatFrameMessageListener 位于两个单独的 Java 源文件中的第二种方法,您的代码如下所示:

    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();
            }
        }
    }
    

    【讨论】:

    • 但是框架在不同的类中 private void sendChatBattonActionPerformed(java.awt.event.ActionEvent evt) { String empty="";字符串消息= inputChatText.getText(); if (message.equals(empty)){ inputChatText.setText(""); inputChatText.requestFocus(); }else{ inputChatText.setText("");试试 { String newMessage=userName+"~"+message+"~chat";发送消息(新消息); } catch (JMSException ex) { Logger.getLogger(chatFrame.class.getName()).log(Level.SEVERE, null, ex)
    • 将您的jTextArea 作为参数传递给您的MessageListener 构造函数,即使用@mprabhat 给出的代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多