无法使用鼠标回调来使用java swing

时间:2015-06-26 17:27:58

标签: java swing matlab

我希望在沿滑块单击或拖动鼠标时获取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)

我很感激任何建议。

1 个答案:

答案 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