我已经为此工作了数周,以使其发挥作用,但没有成功。我正在使用 Javafx 和 java 来使用 smack API (xmpp) 实现一个小型聊天程序。问题是如何将接收到的消息从java获取到javafx。当我有一个带有静态字符串(如“测试消息”)的变量并在java中调用postMessage将其发送到javafx时,下面的代码实际上是有效的。但是如何从 java 调用 postMessage 获取另一个对象(MessageListener)?
public class Java_callback implements RunnableFuture {
FXListener listener;
public String testmsg;
public Java_callback(FXListener listener) {
this.listener = listener;
}
@Override
public void run() throws Exception {
postMessage(testmsg);
}
public void postMessage(final String msg) {
Entry.deferAction(new Runnable() {
@Override
public void run() {
listener.callback(msg);
}
});
}
}
这里是处理消息的代码。这部分需要从上面的代码中调用 postMessage。
public void xmpp_create_chat(String msg) {
ChatManager chatmanager = connection.getChatManager();
Chat newChat = chatmanager.createChat("admin@unfc", new MessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
//msgArray.add( new String("Received message: " + message.getBody()) );
//msg_return = "blabla";
//java_callback.postMessage(msg_return);
//test.postMessage(message.getBody());
//System.out.println("Received message: " + message);
}
});
最佳答案
如果将 postMessage()
设为静态,如下所示:
public static void postMessage(final String msg);
...然后您可以从processMessage()
对其进行static
方法调用,如下所示:
Java_callback.postMessage(msg_return);
更新:同时更改监听器的初始化。
private static FXListener listener;
希望这不会破坏所提供代码之外的内容:)
关于java - 从另一个类调用对象(java、javafx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2214949/