我正在与发布者和订阅者制作聊天应用程序,我有两个类,一个是聊天框架,一个是聊天成员类。成员类从jtext field获取消息,聊天成员发布者将其发送回jtext Area。
我很难从订阅者MessageListener获取返回到jtext区域的文本
@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();
}
}
假设您充当Chat Frame的类称为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();
}
}
}
问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 使用jQuery输入文件的完整路径 我有以下html元素 如果我用 我只是文件名,而不是文件的完整绝对路径。有人可以告诉我如何获得完整路径吗? 问题答案: 您不能这样做-由于安全问题,浏览器将不允许这样做。尽管有解决方法,但事实是您不应该依靠这种方法。以下堆栈溢出问题与此处相关: 使用jquery输入文件的完整路径 如何从Fir
问题内容: 我有一个ResultSet返回不同类型的数据。该查询是动态构造的,因此在编译时,我不知道查询将返回哪种类型的值。 假设所有结果都是字符串,我编写了以下代码。但是我也想获取每个值的类型。我怎样才能做到这一点? 以下是我编写的代码。 此时,我想获取列类型,并根据数据类型获取值。 问题答案: 所述返回一个指定列类型值发现。 例:
我正在创建一个显示员工姓名和薪资的程序。名称和工资是由用户输入的,我想做两个雇员,即两个实例。如何从用户获得两个独立的输入? 公共类员工{
问题内容: 当我在一个类文件中使用代码时,它可以完美运行: 我想从其他类文件运行我的异步任务,我有代码: 下载File.java 下载FileAsync.java 我正在使用eclipse,并且我的DownloadFile.java文件中出现错误,有很多带红色下划线的代码…。我是java和android dev的新手。 问题答案: 如果可以通过某种方式将Activity类或其上下文传递给Async
我需要获取从一行基线到基线再到下一行文本行的距离,与 JTextArea 中的布局相同。为此,我只有一个具有指定字体大小的字体。 我的问题是,在字体上,我只能获取 LineMetrics 或 FontMetrics,并且它们都有不同大小的线条(getAscent/getHeight/getDescent),具体取决于当前文本 - 例如,如果有字母 ,则上升更大,如果有 ,我有下降。 有没有办法得到
问题内容: 在某些情况下,我必须从标记中获取文本,例如- 输入标签中的文本是一些说 但是当我使用时,它什么也不会返回。 无论如何,我可以从标签中获取文本吗? 问题答案: 您可以使用以下任何一种: 让我知道这是否没有帮助。