我的代码是一个带有几个基于java的UI(JIDE组件,自定义java类和jTable)的GUI。
以下是我的代码片段:
%% 1st Table.
%Loading my custom java class ParameterTableModel (extends DefaultTableModel)
% ...
%% 2nd Table - Building JIDE property table
PropertyTableList = java.util.ArrayList();
% Creating 1st property
MyProp = javaObjectEDT(com.jidesoft.grid.DefaultProperty());
MyProp.setName('TypeOfAnalysis');
set(handle(MyProp,'CallbackProperties'),'PropertyChangeCallback',{@PropCB});
PropertyTableList.add(MyProp);
% Building table
PropertyTableModel = javaObjectEDT(com.jidesoft.grid.PropertyTableModel(PropertyTableList));
PropertyTableGrid = javaObjectEDT(com.jidesoft.grid.PropertyTable(PropertyTableModel));
PropertyPane = javaObjectEDT(com.jidesoft.grid.PropertyPane(PropertyTableGrid));
[~, mhPropertyPane] =javacomponent(PropertyPane,[0,0,1,1], figure );
set(mhPropertyPane,'Units','normalized','Position',[0,0,1,1])
% fake callback, property changed
function PropCB( hobj, hev )
disp('PropCB')
end
当我关闭主图并在命令窗口中调用“clear java”时,会发出以下警告:
警告:存在ParameterTableModel类的对象 - 不清除java
如果我没有将回调附加到MyProp,则不再发出警告。 我找到的唯一解决方法是致电:
set(MyProp.handle('CallbackProperties'),'PropertyChangeCallback',[])
在图的CloseRequestFcn中。但这并不令人满意,因为我在完整的GUI中有数百个这样的属性。
我发现这个问题与我的问题有关,但没有真正的答案: clear Java memory