2013-10-30 68 views
2

我認爲這可能是一個簡單的問題。當按下箭頭鍵時,使MATLAB滑塊不滑動

基本上,我有一個(連續)滑塊,我已經在MATLAB中實現。如果我點擊滑塊並滑動標籤,我就會得到我想要的東西等等。這很好。

現在,向上/向下/向左/向右箭頭鍵也使滑塊滑動。但是,我不想讓滑塊移動,但我想用它們做其他事情。那麼,當按下箭頭鍵時,如何停止移動滑塊選項卡,以便我可以將它們用於其他內容?

謝謝。

+0

我想你可以通過'eventdata.Key'看到用'eventdata'按下的按鍵。如果是向上,向下,向左或向右鍵,那麼你應該能夠發出一個返回來防止滑塊做任何事情。 – Justin

+0

@jucestain我確實有eventData的監聽者,是的。實際上,只要顯示「左」,「右」等按鈕,但滑塊的拇指也會移動。你是什​​麼意思「發出回報」來阻止滑塊做任何事情?非常感謝。 – Spacey

+0

嗯...我指的是滑塊回調函數。返回將阻止觸發滑塊回調,但箭頭鍵可能仍會移動滑塊。我試着覆蓋'KeyPressFcn'回調,但仍然不起作用,所以我不確定你能做什麼。 – Justin

回答

1

這樣做是因爲當你點擊滑塊時,滑塊會獲得焦點。

在你的滑塊回調,在呼叫的末尾:

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

這將迫使滑塊失去焦點。這是非常黑客,但應該工作。

+0

嗯,謝謝,這似乎工作...現在...像你一樣,我擔心它可能會給我因爲它很黑,所以後面會出現問題......也許還有其他方法? – Spacey

0

不調用(緩慢)drawnow函數的另一種解決方案,因爲滑塊回調似乎通過焦點按下時按下的鍵連續調用,因此使用java並請求焦點到滑塊回調中的其他組件。像這樣的事情(我將焦點轉移到一個無害的uipanel): jhUipanel = findjobj(hUipanel); jhUipanel.requestFocus;