2015-12-22 42 views
0

我想在包含幾個小部件的figure中很好地處理事件。一方面,只有figure有一個WindowScrollWheelFcn(如果我現在專注於鼠標滾輪)。另一方面,當我創建一個包含兩個列表的數字時,如具有多個小部件的Matlab圖中的小部件選擇和鼠標事件處理

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

我不明白你在問什麼。 – excaza

+0

@excaza在上面兩個列表的圖中,添加一個軸,然後編寫一個'WindowScrollWheelFcn'回調函數,例如只有在選擇軸時才改變軸背景的顏色。 – user1735003

回答

1

我相當確定滾動的list樣式uicontrol發生在MATLAB的事件處理框架之外,在Java級別。

但是,您可以使用gco從您的回調中檢測當前選定的對象。這將正確返回滾動的uicontrol,如果其中一個被選中,並且會爲axes做同樣的事情。您只需要小心如何處理子對象的選擇,例如,如果您選擇了在axes上繪製的line,並且您仍然希望滾輪事件影響那些axes

+0

我不知道這個函數'gco' - 它有效地提供了我正在尋找的選擇器。 – user1735003

相關問題