【问题标题】:Can't get mouse callback to work with java swing无法让鼠标回调与 java swing 一起使用
【发布时间】:2015-06-26 17:27:58
【问题描述】:

我想在鼠标单击或沿滑块拖动时获取 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 行) 设置(jbh,'MouseDraggedCallbackData',@myCallbackFcn)

如果有任何建议,我将不胜感激。

【问题讨论】:

  • 不确定如何从 Matlab 处理摇摆,但我很惊讶地看到您收听的事件是 MouseDragged。通常这个事件属于MouseListener。也许尝试将事件更改为StateChanged,因为它是监视JSlider 更改的标准事件,如here 所示。
  • 感谢@EricLeibenguth。我看了一下页面,但我不确定如何在 Matlab 中实现该代码。
  • 也许看看你用StateChangedCallbackData替换MouseDraggedCallbackData会发生什么
  • 看起来不止这些。类似的错误。

标签: java swing matlab


【解决方案1】:

感谢我的同事分享了一种从滑块中获取最终值的简单方法。代码如下:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 2018-01-02
    相关资源
    最近更新 更多