从另一个类(java、javafx)调用对象
Posted
技术标签:
【中文标题】从另一个类(java、javafx)调用对象【英文标题】:Calling an object from another class (java, javafx) 【发布时间】:2010-02-06 22:14:12 【问题描述】:我已经为此工作了数周以使其正常工作,但没有成功。我正在使用 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);
);
【问题讨论】:
【参考方案1】:如果你将postMessage()
设为静态,如:
public static void postMessage(final String msg);
...然后您可以从processMessage()
对其进行static
方法调用,如下所示:
Java_callback.postMessage(msg_return);
更新:也更改您的侦听器的初始化。
private static FXListener listener;
希望这不会破坏所提供代码之外的内容:)
【讨论】:
public static void postMessage(final String msg) is not working because listener.callback(msg);(错误信息:“non-static variable listener cannot be referenced from a static context” 见我上面的更新。这将解决您的错误,但我很偏执它会破坏其他东西。【参考方案2】:包含您的第二个函数的类必须具有对第一个对象的引用,以便它可以进行调用。
这里需要的东西非常基本,以至于很难弄清楚一个例子可能是什么。
第二堂课是这样的:
class MessageReceiver
private Java_callback callback;
public void setJava_callback(Java_callback callback)
this.callback = callback;
....
void process_message(...) // inside your inner class
calllback.postMessage(msg);
内部类是否可以引用其包含类的字段?
【讨论】:
你有例子吗?抱歉,我是 java 新手。 Dolph Mathews 为我提供了解决方案。还是谢谢你。以上是关于从另一个类(java、javafx)调用对象的主要内容,如果未能解决你的问题,请参考以下文章