2

我想这可能是一个简单的问题。

基本上,我有一个在 MATLAB 中实现的(连续)滑块。如果我单击滑块并滑动选项卡,我会得到我想要的,等等。这很好。

现在,上/下/左/右箭头键也使滑块滑动。但是,我不想让滑块移动,但我想将它们用于其他用途。那么,如何在按下箭头键时阻止滑块移动滑动选项卡,以便我可以将它们用于其他用途?

谢谢你。

4

3 回答 3

1

这样做是因为当您单击滑块时,滑块会获得焦点。

在您的滑块回调中,在通话结束时:

set(hObject, 'Enable', 'off');
drawnow;
set(hObject, 'Enable', 'on');

这将迫使滑块失去焦点。这在很大程度上是一个 hack,但应该可以工作。

于 2013-10-30T01:36:25.157 回答
0

不调用(慢)drawow 函数的不同解决方案,因为滑块回调似乎是在焦点时按下键连续调用,是使用 java 并请求焦点到滑块回调中的不同组件。像这样的东西(我将注意力转移到一个无害的 uipanel 上): jhUipanel = findjobj(hUipanel); jhUipanel.requestFocus;

于 2016-07-29T11:55:17.297 回答
0

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.

于 2021-04-09T19:11:30.283 回答