www.gusucode.com > GUI的布局工具箱 > GUI的布局工具箱/GUI的布局工具箱/GUILayout-v1p10/+uiextras/HBox.m
classdef HBox < uiextras.Box %HBox Arrange elements in a single horizontal row % % obj = uiextras.HBox() creates a new horizontal box layout with % all parameters set to defaults. The output is a new layout object % that can be used as the parent for other user-interface components. % % obj = uiextras.HBox(param,value,...) also sets one or more % parameter values. % % See the <a href="matlab:doc uiextras.HBox">documentation</a> for more detail and the list of properties. % % Examples: % >> f = figure(); % >> b = uiextras.HBox( 'Parent', f ); % >> uicontrol( 'Parent', b, 'Background', 'r' ) % >> uicontrol( 'Parent', b, 'Background', 'b' ) % >> uicontrol( 'Parent', b, 'Background', 'g' ) % >> set( b, 'Sizes', [-1 100 -2], 'Spacing', 5 ); % % >> f = figure(); % >> b1 = uiextras.VBox( 'Parent', f ); % >> b2 = uiextras.HBox( 'Parent', b1, 'Padding', 5, 'Spacing', 5 ); % >> uicontrol( 'Style', 'frame', 'Parent', b1, 'Background', 'r' ) % >> uicontrol( 'Parent', b2, 'String', 'Button1' ) % >> uicontrol( 'Parent', b2, 'String', 'Button2' ) % >> set( b1, 'Sizes', [30 -1] ); % % See also: uiextras.VBox % uiextras.HBoxFlex % uiextras.Grid % Copyright 2009-2010 The MathWorks, Inc. % $Revision: 366 $ % $Date: 2011-02-10 15:48:11 +0000 (Thu, 10 Feb 2011) $ methods function obj = HBox( varargin ) %HBox Container with contents in a single horizontal row % First step is to create the parent class. We pass the % arguments (if any) just incase the parent needs setting obj@uiextras.Box( varargin{:} ); % Set user-supplied property values if nargin > 0 set( obj, varargin{:} ); end end % constructor end % public methods methods( Access = protected ) function [widths,heights] = redraw( obj ) %REDRAW Redraw container contents. % Get container width and height totalPosition = ceil( getpixelposition( obj.UIContainer ) ); totalWidth = totalPosition(3); totalHeight = totalPosition(4); % Get children children = obj.getValidChildren(); nChildren = numel( children ); % Get padding, spacing and sizes padding = obj.Padding; spacing = obj.Spacing; % Compute widths widths = uiextras.calculatePixelSizes( totalWidth, ... obj.Sizes, obj.MinimumSizes, padding, spacing ); % Compute heights heights = repmat( totalHeight - padding * 2, size( children ) ); heights = max( heights, 1 ); % minimum is 1 pixel % Compute and set new positions in pixels for ii = 1:nChildren child = children(ii); newPosition = [sum( widths(1:ii-1) ) + padding + spacing * (ii-1) + 1, ... padding + 1, ... widths(ii), ... heights(ii)]; obj.repositionChild( child, newPosition ) end end % redraw end % protected methods end % classdef