2012-07-17 63 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%。