我希望在沿滑块单击或拖动鼠标时获取eventData。我已尝试跨博客帖子(http://undocumentedmatlab.com/blog/uicontrol-callbacks)和相应的书籍提出建议。在我看来,我错过了一些东西。这是代码:
function testMouse
hFig = figure('Position',[450 100 700 850]);
jSlider = javax.swing.JSlider;
[jSlider,~] = javacomponent(jSlider,[100,20,500,50]);
jbh = handle(jSlider,'CallbackProperties');
set (jbh, 'MouseDraggedCallbackData', @myCallbackFcn)
guidata(hFig, handles);
function myCallbackFcn
get (jbh, 'MouseDraggedCallbackData')
guidata(hFig, handles);
这是我在MATLAB中运行代码时遇到的错误:
使用javahandle_withcallbacks.javax.swing.JSlider / set时出错 不允许更改javahandle_withcallbacks.javax.swing.JSlider的'MouseDraggedCallbackData'属性。
testMouse中的错误(第8行) set(jbh,'MouseDraggedCallbackData',@ myCallbackFcn)
我很感激任何建议。
答案 0 :(得分:0)
感谢我的同事分享了一种从滑块获取最终价值的简单方法。这是代码:
function jSlider = testMouse2
hFig = figure('Position',[450 100 700 850]);
jSlider = javax.swing.JSlider;
jSlider.setMinimum(0);
jSlider.setMaximum(20);
jSlider.setMajorTickSpacing(5);
jSlider.setMinorTickSpacing(1);
jSlider.setPaintTicks(true);
jSlider.setPaintLabels(true);
jSlider.setSnapToTicks(true);
javacomponent(jSlider,[10,70,600,45]);
end
您可以调用该函数,然后只需使用java调用以这种方式获取滑块的最终值:
slider = testMouse2;
slider.getValue