gpt4 book ai didi

java - 如何从不同的类获取文本文件的输入

转载 作者:行者123 更新时间:2023-11-30 09:36:26 24 4
gpt4 key购买 nike

我正在制作与发布者和订阅者的聊天应用我有两个类,一个是聊天框,一个是聊天成员的类。成员类从 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);
}
}
}

谢谢。

最佳答案

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

关于java - 如何从不同的类获取文本文件的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10767543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com