我想这可能是一个简单的问题。
基本上,我有一个在 MATLAB 中实现的(连续)滑块。如果我单击滑块并滑动选项卡,我会得到我想要的,等等。这很好。
现在,上/下/左/右箭头键也使滑块滑动。但是,我不想让滑块移动,但我想将它们用于其他用途。那么,如何在按下箭头键时阻止滑块移动滑动选项卡,以便我可以将它们用于其他用途?
谢谢你。
我想这可能是一个简单的问题。
基本上,我有一个在 MATLAB 中实现的(连续)滑块。如果我单击滑块并滑动选项卡,我会得到我想要的,等等。这很好。
现在,上/下/左/右箭头键也使滑块滑动。但是,我不想让滑块移动,但我想将它们用于其他用途。那么,如何在按下箭头键时阻止滑块移动滑动选项卡,以便我可以将它们用于其他用途?
谢谢你。
这样做是因为当您单击滑块时,滑块会获得焦点。
在您的滑块回调中,在通话结束时:
set(hObject, 'Enable', 'off');
drawnow;
set(hObject, 'Enable', 'on');
这将迫使滑块失去焦点。这在很大程度上是一个 hack,但应该可以工作。
不调用(慢)drawow 函数的不同解决方案,因为滑块回调似乎是在焦点时按下键连续调用,是使用 java 并请求焦点到滑块回调中的不同组件。像这样的东西(我将注意力转移到一个无害的 uipanel 上): jhUipanel = findjobj(hUipanel); jhUipanel.requestFocus;
There is a good answer here:
https://www.mathworks.com/matlabcentral/answers/33224-gui-figure-focus
jPeer = get(handle(gcf), 'JavaFrame');
jPeer.getAxisComponent.requestFocus;
The answer from Guest36 probably works too if you download Yair's findjobj function, but I didn't try that.