2012-07-17 42 views
3

我使用uicontrol創建GUI元素。以下是我的代碼Matlab的UIControl單位

uicontrol('Style','pushbutton', 'String','Load data','Parent',hTabs(1),'Position',[250 825 80 20], 'Callback',@ButtonCallback); 

這裏的問題是,當我使用單位規範化選項GUI元素從屏幕上消失。我想,這樣的GUI調整自己在不同的屏幕分辨率使用規範化。任何想法都會對我很有幫助。

回答

2

當您使用Normalized單位時,您需要定義介於0和1之間的位置,其中0代表底部/左側,1代表包含對象的總高度/寬度。

您目前正在使用遠遠超出此範圍的數字來定義位置。你可以做兩件事。

  • 開關在單獨的函數調用單位normalized(下面演示)
  • 創建uicontrol與歸一化單位,但你必須要在計算正確的位置矢量

下面是例子怎麼辦

一個簡單的解決方案是創建uicontrol,然後設置單位歸一化在一個單獨的電話

u = uicontrol(...) %don't specify the units 
set(u,'Units', 'Normalized'); % this solves your problem 

如果你想在規範化單位

normPos = get(u, 'Position') % get the position in normal space 

位置矢量然後用這些數字來創建uicontrol與歸一化單位:

u = uicontrol(...,'Units','Normalized', 'Position', normPos); 
1

當使用'units','normalized'選項,則必須改變你的位置矢量。圖中參考系統的座標爲0和1之間

例如

uicontrol('Style','pushbutton',... 
      'String','Load data',... 
      'Parent',hTabs(1),... 
      'units','normalized',... 
      'Position',[0 0 0.1 0.1],... 
      'Callback',@ButtonCallback); 

給你在父面板的左下角的高度和寬度的一個按鈕10%。