如何在Matlab中向java组件添加java侦听器?
要将java组件添加到MatlabGUI中,我使用未记录的函数如何在Matlab中向java组件添加java侦听器?,java,matlab,Java,Matlab,要将java组件添加到MatlabGUI中,我使用未记录的函数javacomponent: [handles.myWidget, handles.hMyWidget] = javacomponent('com.mycompany.MyClass', [90,10,460,400], gcf); 同时,要添加事件侦听器回调,我需要调用addlistener: handles.myWidgetListeners = addlistener( myhandle, 'MouseClickedCallb
javacomponent
:
[handles.myWidget, handles.hMyWidget] = javacomponent('com.mycompany.MyClass', [90,10,460,400], gcf);
同时,要添加事件侦听器回调,我需要调用addlistener:
handles.myWidgetListeners = addlistener( myhandle, 'MouseClickedCallback', @mouseClicked_Callback);
javacomponent
返回的句柄都不适合addlistener
,因此我需要使用以下内容再创建一个句柄:
myhandle = handle(handles.myWidget, 'CallbackProperties');
那么,这是真的吗,我需要为一个组件保留四个手柄,以便与之完全配合使用
是否可以缩短此代码?虽然您概述的所有步骤都是为通过
javacomponents
创建的Java swing事件分配MATLAB回调的要求,但您不必存储创建的所有四个句柄
[jwidget, hwidget] = javacomponent('myclass', [0 0 100 100], gcf);
hwidget = handle(hwidget, 'CallbackProperties');
您不需要同时维护hwidget
和handle(hwidget,'CallbackProperties')
的结果,因为它们在功能上是等效的
另一个选项是在创建java对象时不使用javacomponent
,然后从中获取“CallbackProperties”句柄
jwidget = com.mycompany.myclass();
hwidget = handle(jwidget, 'CallbackProperties');
此外,就侦听器而言,您不必显式地将其存储为变量并在GUI中跟踪它。相反,您可以简单地将其存储在小部件本身中,然后如果需要禁用它,您可以用相同的方式获取它
listener = addlistener(hwdiget, 'MouseClickedCallback', @mouseclick);
set(hwidget, 'UserData', listener);