Я уже несколько недель работаю над этим, чтобы все заработало, но безуспешно. Я использую Javafx и java для реализации небольшой программы чата с использованием API smack (xmpp). Проблема в том, как получить полученные сообщения из java в javafx. Код ниже действительно работает, когда у меня есть переменная со статической строкой, такой как «тестовое сообщение» и вызывающая postMessage в Java, чтобы отправить ее в javafx. Но как я могу получить другой объект (MessageListener) из Java, вызывающий postMessage?
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);
}
});