3¡¢Ê¹ÓÃLayoutManagers ºÍ Panes
Layoutmanagers£¬¾ÍÏñSWTÖеÄLayoutÀ࣬ÓÃÀ´ÃèÊö×Ó×é¼þÔÚÈÝÆ÷ÖеÄλÖúʹóС¡£ÕâÒ»½Ú½«½éÉÜLayoutManager
µÄ×ÓÀ࣬ÒÔ¼°ÔõÑùʹÓÃËüÃÇ¡£
ÁíÍ⣬ÎÒÃÇ»¹»áÉæ¼°Draw2dµÄpanes¡£ScrollPanes£¬LayERPanes£¬ÒÔ¼°ËüÃǵÄ×ÓÀà¡£Draw2dûÓÐCompositeÀ࣬
¶øÕâЩpaneÒ»°ã¾ÍÓÃÀ´×÷ΪGUIµÄ±³¾°ÈÝÆ÷¡£ÕâЩÈÝÆ÷ʹµÃ¿ª·¢Í¼ÐÎ±à¼Æ÷¸ü¼ÓÈÝÒס£ÔÚÕâÒ»½ÚµÄ×îºó£¬ÎÒÃÇ»á¼Ì³Ð
FreeformLayerdePane£¬´´½¨flowchart¹¤³ÌµÄµÚÒ»¸öFigure¡£
3.1¡¢Àí½âLayoutManagerµÄ×ÓÀà
ÔÚSWTÖУ¬ÈÝÆ÷ÒÔÀ´Ò»¸öĬÈϵIJ¼¾Ö²ßÂÔÀ´°²ÅÅλÓÚÆäÉϵÄ×é¼þ£»¶øÔÚDraw2dÖÐÄãÐèҪѡÔñÒ»¸öLayoutManagerµÄ
×ÓÀ࣬ÕâЩ×ÓÀàÖУ¬FlowFigureLayoutºÍScrollbarLayoutÖ»Õë¶ÔÌØ¶¨µÄFigure£¬ÎÒÃǽ«¹Ø×¢ÆäËûÈý¸ö£¨±íC.4£©
±íC.4

µ±Ò»¸ö¸¸Í¼Ðε÷ÓôøÓÐconstraint²ÎÊýµÄadd()·½·¨Ê±¸ø×ÓͼÐÎÖ¸¶¨Î»ÖÃʱ£¬ÓÉLayoutManager¸ºÔðÀ´“½âÊÍ”Õâ
¸öconstraint²¢Êµ¼ÊÉèÖøÃ×ÓͼÐεÄλÖá£
ÎÒÃǽ«ÎªÎÒÃÇµÄ±à¼Æ÷Ñ¡ÔñXYLayout¡£ÏÖÔÚÎÒÃÇÐèÒªÒ»¸öºÏÊʵÄÈÝÆ÷ÀࣺÎÒÃÇÑ¡ÔñLayeredPane¡£
3.2¡¢LayeredPanes
ÓÉÓÚDraw2dÓ¦ÓÿÉÄÜ»áºÜ¸´ÔÓ£¬LayeredPaneÌṩÁËºÜ¶à“²ã”ÓÃÀ´ÏÔʾFiguer£¬Ê¹ÓÃ͸Ã÷µÄ²ã£¨Layer£©£¬Äã¿É
ÒÔ½«GUI·ÖÀë³ÉºÜ¶à¸öÃæ£¬²»Í¬µÄLayerÓв»Í¬µÄÌØÐÔ£¬ÀýÈ粻ͬµÄLayoutManager¡£Õâ¶ÔÎÒÃǵÄflowchart±à¼Æ÷À´
˵ºÜÖØÒª£¬ÒòΪÎÒÃǵÄͼÉϲ»½öÓÐFigure£¬»¹ÓÐConnectionºÍfeedback¡£
Àí½âLayeredPaneÈçºÎ¹¤×÷µÄµÚÒ»²½£¬ÊÇѧϰLayer¡£LayerÊÇ͸Ã÷µÄFigure£¬²¢°üº¬Á½¸öÊôÓÚËü×Ô¼ºµÄ·½·¨£º
containsPoint()£¬ºÍfindFigureAt()¡£ÕâЩLayer¶¼Óй̶¨µÄ±ß½ç£¬µ«FreeformLayer¿ÉÒÔÏòÈÎÒâ·½ÏòÑÓÉ죬Õâ¶Ô
ÓÚÄÇЩÓкܴóµÄͼ£¨´óÓÚ´°¿Ú£©µÄÓ¦ÓÃÀ´ËµÊDZØÐèµÄ¡£
LayeredPaneʹÓÃadd()·½·¨À´¼ÓÈëеÄLayer£¬·½·¨²ÎÊýÖ¸¶¨Layer¶ÔÏó£¬Ò»¸öÓÃÀ´Ê¶±ðËüµÄkey£¬ÒÔ¼°Ò»¸öindex
À´±íÃ÷ÆäλÖᣵ±È»ÄãÒ²¿ÉÒÔ´ÓLayeredPaneÉÏɾ³ýÒ»¸öLayer£¬»òÕ߸ıäËüµÄindex¡£
ͨ¹ýÑ¡ÓÃLayeredPaneµÄ×ÓÀ࣬Ä㻹¿É»ñµÃ¸ü¶àµÄ¹¦ÄÜ¡£±ÈÈç˵£¬ÄãÏë¸øÄãµÄpaneÌí¼ÓËõ·ÅµÄ¹¦ÄÜ£¬ÄÇôÓÐScalabl
eLayeredPane£¬Èç¹ûÄãÏëʹµÃ´°¿ÚÏòÈÎÒâ·½ÏòÑÓÉ죬ÄÇô¿ÉÒÔʹÓÃFreeformLayeredPane£¬Èç¹ûÁ½Õß¶¼ÐèÒªµÄ»°£¬¿É
ÓÃScalableFreeformLayeredPane¡£ÔÚÎÒÃǵÄflowchartÖУ¬ÎÒÃÇÖ»ÐèÒªÑÓÉ칦ÄÜ£»ÁбíC.2µÄ´úÂëÊÇÓÃÀ´×÷ΪÎÒÃÇ
×î»ù±¾µÄ±à¼Æ÷µÄFreeformLayeredPane¡£
ÁбíC.2£ºChartFigure.Java
package com.swtjface.AppC;
import org.Eclipse.draw2d.*;
public class ChartFigure extends FreeformLayeredPane
{
public ChartFigure()
{
setLayoutManager(new FreeformLayout());
setBorder(new MarginBorder(5));
setBackgroundColor(ColorConstants.white);
setOpaque(true);
}
}
ÔÚÒÔÉÏ´úÂëÖУ¬ÎÒÃÇΪFreeformLayeredPaneÉèÖÃÁËÍâ¹ÛÊôÐÔ£¬µ«µ½Ä¿Ç°ÎªÖ¹ÉÐδ¼ÓÈëÈκÎLayer£¬ºóÐøÕ½ڽ«Íê³É
Õâ¸öÈÎÎñ¡£
3.3¡¢ScrollPanesÓëViewports
ScrollPane¿ÉÒÔ¼ÓÔÚÈκεÄFiguerÉÏ£¬ÎªÆäÌṩ¹ö¶¯ÌõµÄ¹¦ÄÜ¡£²¢ÇÒ¿ÉÒÔÉèÖùö¶¯ÌõΪʼÖտɼû¡¢Ê¼ÖÕ²»¿É¼û£¬»ò
ÕßÔÚÐèÒªµÄʱºò²Å³öÏÖ¡£
ÔÚÈκÎÒ»¸ö¸ø¶¨Ê±¿Ì£¬Ö»ÓÐScrollPaneµÄÒ»²¿·Ö¿ÉÒÔ±»¿´¼û£¬Õâ¸ö¿É¼ûµÄÇøÓò³ÆÎªViewport¡£ËûÃÇÀàËÆÓÚLayersµ«
ÌṩÁ˸ü¶à·½·¨À´¿ØÖÆ´óСºÍÐÎ×´¡£
ÏÖÔÚ£¬ÎÒÃÇÒѾÓÐÁËflowchart×îµ×²ãµÄÈÝÆ÷£¬ÎÒÃÇÐèÒª´´½¨¸÷ÖÖͼÐμӵ½Õâ¸öÈÝÆ÷ÉÏÃæÀ´¡£Îª´Ë£¬ÎÒÃǵÃÑо¿Ò»ÏÂ
Draw2dµÄGraphicsÀ࣬ÒÔ¼°ËüµÄ»æÍ¼¹¦ÄÜ¡£
ÉÏһƪ£º Draw2D½Ì³Ì£¨¶þ£©
ÏÂһƪ£º ÄÚ²¿Ààѧϰ(Ò»)
ÎÄÕÂÕûÀí£ºÎ÷²¿ÊýÂë--רҵÌṩÓòÃû×¢²á¡¢ÐéÄâÖ÷»ú·þÎñ
http://www.west263.com
ÒÔÉÏÐÅÏ¢ÓëÎÄÕÂÕýÎÄÊDz»¿É·Ö¸îµÄÒ»²¿·Ö,Èç¹ûÄúÒª×ªÔØ±¾ÎÄÕÂ,Çë±£ÁôÒÔÉÏÐÅÏ¢£¬Ð»Ð»!


