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

标签 java events matlab

问题如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/

相关文章:

python - 在 Python 中模拟 MATLAB 的 ode15s

matlab - 是否需要转换为LIBSVM格式

java - 没有 xml 的 HiddenHttpMethodFilter 配置

android - 单击了哪个 subview ?

javascript - 使用 JavaScript 的事件委托(delegate)

java - 如何确定哪个菜单项称为 ActionListener?

matlab - 查找数组中元素之间平均差异的有效方法

java - 让程序等待直到单击按钮

java - 将时区设置为已经在 UTC 中的 UTC

java - 将 txt 文件读入 ObjectList