是否可以在GUI中創建一個對象,該對象的位置由光標位置定義(點擊時拖動),方法是將其'Position'屬性設置爲光標位置。我應該使用什麼功能?在GUI中的拖放操作
7
A
回答
4
您可以使用SELECTMOVERESIZE函數爲GUI對象啓用移動和調整大小。然後,您可以用鼠標單擊並拖動該對象。它是如此簡單:
set(hObject,'ButtonDownFcn','selectmoveresize');
什麼不是那麼簡單的是,如果你的GUI對象是uicontrol object,在這種情況下,您必須通過設置'Enable'
property到'off'
或'inactive'
爲了有'ButtonDownFcn'
禁用對象函數執行而不是'Callback'
函數。即使您沒有爲該對象定義回調,情況也是如此。
您可能還需要在GUI中添加一種方法來打開和關閉對象的移動和調整大小,也許可以選擇一個額外的按鈕或菜單項。爲了展示如何使用按鈕來實現此功能,下面是一個簡單的示例,它創建一個帶有可編輯文本框和按鈕的圖形,該按鈕用於打開和關閉移動和調整可編輯文本框大小的功能:
function GUI_example
hFigure = figure('Position',[100 100 200 200],... %# Create a figure
'MenuBar','none',...
'ToolBar','none');
hEdit = uicontrol('Style','edit',... %# Create a multi-line
'Parent',hFigure,... %# editable text box
'Position',[10 30 180 160],...
'Max',2,...
'String',{'(type here)'});
hButton = uicontrol('Style','pushbutton',... %# Create a push button
'Parent',hFigure,...
'Position',[50 5 100 20],...
'String','Turn moving on',...
'Callback',@button_callback);
function button_callback(hSource,eventData) %# Nested button callback
if strcmp(get(hSource,'String'),'Turn moving on')
set(hSource,'String','Turn moving off'); %# Change button text
set(hEdit,'Enable','inactive',... %# Disable the callback
'ButtonDownFcn','selectmoveresize',... %# Turn on moving, etc.
'Selected','on'); %# Display as selected
else
set(hSource,'String','Turn moving on'); %# Change button text
set(hEdit,'Enable','on',... %# Re-enable the callback
'ButtonDownFcn','',... %# Turn off moving, etc.
'Selected','off'); %# Display as unselected
end
end
end
注意:雖然文檔列出'Selected'
property爲只讀,我可以修改它,沒有問題。它必須是文檔中的錯字。
2
您可以在您的GUI中創建一個不可見的軸,並繪製您想要的任何對象。然後,您可以使用文件交換中的DRAGGABLE來允許在整個位置拖動對象。
相關問題
- 1. javascript中的拖放操作
- 2. 拖放DOM操作
- 3. 在android中的listview拖放操作?
- 4. VSTO在excel中的拖放操作
- 5. 在Windows Phone 7.1中的拖放操作
- 6. JTree在Netbeans中的拖放操作
- 7. 在腳本中操作jQuery可拖放/拖放[UPD]
- 8. 在QtWebkit中禁用拖放操作
- 9. 在NSTableView中實現拖放操作
- 10. 在JFC中模擬JDialog拖放操作
- 11. 在JavaFX中拖放setOnDragDropped操作問題
- 12. iOS中的基本拖放操作
- 13. Android中的JQuery UI拖放操作
- 14. JTable中的動畫拖放操作
- 15. WPF拖放阻止操作
- 16. 簡單的GUI Windows拖放
- 17. 在Matlab GUI中拖放文件
- 18. 在MDI子表單中拖動n個拖放操作
- 19. 禁用光標在拖放操作
- 20. 而使用拖放和jQuery UI的拖放操作給錯誤
- 21. 使用HTML5拖放操作時,如何在拖放區域上拖動圖像?
- 22. 如何實現拖放gui?
- 23. 如何禁用NSTextView的拖放操作?
- 24. c#控制datagridview列的拖放操作
- 25. 如何禁用NSTextField的拖放操作?
- 26. 記錄用戶的拖放操作
- 27. 取消對DataGridView的拖放操作
- 28. 使用拖放操作的網站
- 29. 基於data-id的jquery拖放操作
- 30. Android Canvas與GLSurfaceView的拖放操作
感謝您的快速響應!你能告訴我函數從哪裏獲取輸入參數嗎? – straits
@Adam:哪個函數? SELECTMOVERESIZE不會將任何參數作爲輸入。 – gnovice
採用hSource和eventData的button_callback函數。 – straits