gpt4 book ai didi

java - 在 MATLAB 中监听 Java 自定义事件

转载 作者:行者123 更新时间:2023-11-30 11:47:39 25 4
gpt4 key购买 nike

问题如question .

我读了example 已经很多次了,但我仍然无法正常工作。

想法是用 Java 写一个 Event 并为 MATLAB 写一个回调。

首先我写了我的事件类:package.EventTest。然后我构建它并将带有此类的路径添加到 javaclasspath。

然后在 matlab 中执行:

evt = package.EventTest
set(evt,'TestEventCallback',@(h,e)disp(h))
evt.notifyMyTest

在“evt.notifyMyTest”行之后它应该显示一些东西,但什么也没有。我使用了一个调试器,当涉及到函数“notifyMyTest”时,我看到带有监听器的 vector 是空的。所以它不能显示任何东西。我做错了什么?这行“set(evt,'TestEventCallback',@(h,e)disp(h))”是否必须向该 vector 添加监听器?

或者有另一种可能来挑战它?

提前致谢,莱克斯

UPD: 我的 Java 类在包“package”(example)中:

public class EventTest {

private java.util.Vector data = new java.util.Vector();
public synchronized void addMyTestListener(MyTestListener lis) {
data.addElement(lis);
}
public synchronized void removeMyTestListener(MyTestListener lis) {
data.removeElement(lis);
}
public interface MyTestListener extends java.util.EventListener {
void testEvent(MyTestEvent event);
}
public class MyTestEvent extends java.util.EventObject {
private static final long serialVersionUID = 1L;
public float oldValue,newValue;
MyTestEvent(Object obj, float oldValue, float newValue) {
super(obj);
this.oldValue = oldValue;
this.newValue = newValue;
}
}
public void notifyMyTest() {
java.util.Vector dataCopy;
synchronized(this) {
dataCopy = (java.util.Vector)data.clone();
}
for (int i=0; i<dataCopy.size(); i++) {
MyTestEvent event = new MyTestEvent(this, 0, 1);
((MyTestListener)dataCopy.elementAt(i)).testEvent(event);
}
}
}

最佳答案

我想,我找到了另一种方法来做我想做的事。现在我使用 PropertyChangeSupportPropertzChangeListener

在 Matlab 中我添加

'PropertyChangeCallback'

然后我从 Java 代码发送

firePropertyChange("Property", oldValue, newValue)

我的 Matlab 代码会收到通知。

看起来很正常

关于java - 在 MATLAB 中监听 Java 自定义事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9226385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com