java - 从另一个类调用对象(java、javafx)

标签 java xmpp javafx

我已经为此工作了数周,以使其发挥作用,但没有成功。我正在使用 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/

相关文章:

python - XMPP 订阅节 Google Talk

php - 基于 JAXL 的聊天客户端。需要帮助连接到 Gtalk 或其他服务器进行测试

java - Google Maps Android API v2 ClassNotFound 运行时错误

android xabber 未授权 openfire xmpp 帐户

Javafx TextField伪ClassStateChanged方法不起作用

java - 在 HTMLEditor JavaFx 中突出显示文本

java - 将文本区域的文本设置为与底部对齐

java - java中如何在不关闭UI的情况下更新时间?

java - 有人可以向我解释一下哨兵在 Java 中的作用吗?或者它是如何工作的?

java - 在没有finally block 的try block 之后执行return语句