我正在尝试在包含多个小部件的figure
中很好地处理事件。一方面,只有figure
有WindowScrollWheelFcn
(如果我现在专注于鼠标滚轮)。另一方面,当我创建一个包含两个列表的图形时,例如
h_fig = figure();
strs = arrayfun(@num2str, [1:100], 'UniformOutput', false);
uicontrol(h_fig, 'Style', 'list', 'Units', 'normalized', 'Position', [0.6 0 1 1], 'String', strs);
uicontrol(h_fig, 'Style', 'list', 'Units', 'normalized', 'Position', [0 0 0.4 1], 'String', strs);
鼠标滚轮事件仅由选定列表捕获和处理。此外,选择列表会取消选择另一个列表,如预期的那样。
现在我想在那里插入我自己的小部件,我希望我的自定义小部件能够像这些列表一样处理。如何编写一个与上面示例中显示的窗口小部件选择机制集成的窗口小部件?也就是说,这可能会禁用其他窗口小部件(自定义和内置列表)以及被禁用。我想,一旦这个到位,编写一个仅在所选小部件上运行的WindowScrollWheelFcn
就会很简单。
答案 0 :(得分:1)
我很确定list
- 样式uicontrol
的滚动发生在MATLAB的事件处理框架之外,在Java级别。
但是,您可以使用gco
从回调中检测当前选定的对象。如果选择其中一个,这将正确返回滚动的uicontrol
,并为axes
执行相同的操作。您只需要小心处理子对象的选择,例如,如果在line
上绘制了axes
,并且您仍希望滚轮事件影响那些axes
。