Java 如何从不同的类获取jtext文件的输入
我正在与发布者和订阅者制作聊天应用程序 我有两个类,一个是聊天框架,另一个是聊天成员的类。 成员类从jtextfield获取消息,聊天室成员发布者将其发送回jtextarea 我很难从订户MessageListener将文本返回到jtextareaJava 如何从不同的类获取jtext文件的输入,java,swing,jtextarea,Java,Swing,Jtextarea,我正在与发布者和订阅者制作聊天应用程序 我有两个类,一个是聊天框架,另一个是聊天成员的类。 成员类从jtextfield获取消息,聊天室成员发布者将其发送回jtextarea 我很难从订户MessageListener将文本返回到jtextarea @Override public void onMessage(Message m) { try { TextMessage textMessage = (TextMessage) m; System.
@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);
}
}
}
谢谢。提供了代码片段,这是我的理解,用于在文本区域中添加文本 假设充当聊天框的类名为
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();
}
}
}
}
第二种方法当您的ChatFrame
和MessageListener
位于两个单独的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();
}
}
}
但帧位于不同的类私有void sendchattonactionperformed(java.awt.event.ActionEvent evt){String empty=”“;String message=inputChatText.getText();if(message.equals(empty)){inputChatText.setText(“”;inputChatText.requestFocus()}else{inputchatext.setText(“”);try{String newMessage=userName+“~”+message+“~chat”;sendMessage(newMessage);}catch(jmsceception ex){Logger.getLogger(chatFrame.class.getName()).log(Level.SEVERE,null,ex)将
jTextArea
作为参数传递到MessageListener
构造函数中,JU使用@mprabhat给出的代码
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();
}
}
}