|
áÎ ŕË - áÎ ÜË ŢéÁ .Ýéé˙ ÉÍ ÁÍ ŕË ß Ĺ Ý Ú ˙ÁÍ ÜÁßĎß áÍ Ţ ŕé ˙éé ˙ÁÍ) ËË˙ Ń ÁÍ ˙ÁÍ ŕ ËÎ˙ ŕË ÝÍ Ú Ý .ËÍÁË ÍÁÍ ÝÍ ÍË ˙ Ü ÍË ˙ÁÍ .(ËË˙ Ţ ÁÍ ÜË Ĺ Ĺ .ĹÁ Ô ÍÁ ÍË Áß UI Layout Manager ŕß ŕ Á ŕËééÍß ŕ ł ß ˛ Ü ÍË ß ß Á ÜË ˙ÍÁËß ÍË ÝÍ Ý ÔéÁÍ User Interface éééÁ ÍË .ĹÁ ŕËŔ ˛ Ü ÍË Á ÜË .ĹÁ ŕË User Interface Ë ˙ ŹËß ŕËÁË Ţ Í ÍË ŕŔ ˙ÁÍ .ĹÁ ˙Á ˙ÁÍé ÁÍ é˙ééÁÍ ÜÁßĎß ŹŢŔ ĹÁßÍË Ý ÍË ß ŕËß áÎ ŕË ÁÍ ÁÍ JComponent ŕé ˙éé Íé ÎÁ ˙Áŕéß ĹÍß ˙ÁÍ .Ë ŕ Ĺ .Ëß˙ ŕËÁËÍ Î ŹË˙ áÎ ŕË ˛ Ü ![]() ÎÁ é˙ééÁÍé ĹéÁßéÍË ŢŔ ŕéŐß .ĹÁ PAC Control ĹŔ Ú Form Đ ÝÍé .Ëéé˙ Í ˙ßÍÍ ˙ÁÍ áÎ Ă Í ß Ń Ü ˙ĹŔ ŕé ˙ ÝÍ ÎÁ Î ĹÍß ÍË ËÁß ˙ ĹŔ ÁĚ ŹËË˙ Ô ÁÍ JComponent ˙ßééÁ ÝÍé-ŢßÍË-ĹéÍé ŕßéé ŢéÁ) Ëéé ŕËéé éÁ ˙ééÁÍé ŢÁß .(ĹÁ Gang of Four Composite ËééŔ˙ ÍË Ń ŕ ÝÍ ˙ßÍÍ ŕ áËË ˙ĹŔ Ĺ ˙ËÍ ˙ÁÍ ÝÍ String ŹElement .Ëéé˙é ŕËéé éÁ (Private ˙ééÁË Đ) Elements ÎÁ Ë ŕß .ËÍÁË˙ ŕ ŹË˙ ˙ ÁÍ Ĺ ˙Á ß Đ ŕ (˙ŕ Í) ˙é éÍË ŕé ÁÍ ÍééÁ ÉÁÍÔ ÍÁ .Ëß˙ ŕÍĚ (Ë Ý ŕ) Ĺ Ý ŕ ŕËéé ËéßÍ ˙Ô ÍË Ë ŕ Ë˙ Í Đ ŕß Ĺ ŹËË ÝÁ .Ë˙ Í áÎ Ýé is invariant) invariant :Ëßé˙é ˙é Element ĹŔ Öß ßË ÎÁ .éicon ß slabel Ëééé Ëéé˙é Ĺ ÝÍ Ń Ý ŕ (ĹÁ ĹÍË ÁËé invariant Í .Ë invarian icon ß label Ë ˙Î ÝÍé ÍË add field(invariant: JComponnet, location:Rectangle) Ëé ŢËÍ Ţé Element ŕËÎÎÁ ŕË Á ) ÁÍ Ă Element ŕ ËÍ˙ ÍÁÍ .Ëééé˙é ŕ Ë Ĺ ŕ ÁÍÁ ß ŕ (add field() ˙ŢßÍÁ ŕËé Ţééé Ü ÍË invariant JComponent ˙ ŹËËÍ˙ Ü ÝÍ ŕ .Ëß˙ ŕËÁË Ń ß ŕ Í ÍÁÍ Ĺ ÎÁ ˙ Í Ë invariant ŕ ˙Ë ŕ ŕ ĹÁ Í ÓÍ ŕé add-field ˙éŕéé Í Ú Ë ŢÁ .Ë˙ ÎÁ ˙ .ËÍÁË˙ ŕ ÁÍ Ĺ Ý ß Đ Ý ŕ ˙ŕ Í ĹÍßé ŕ ŕ .Ëß˙ ŕÍĚ ŕ Í ĹÍß ŕ Ĺ ˙Á ß Đ ŕ Ë ŕß ŕé ÁÍ ÝÍé ŘéÍé Źŕ Í ËÍÍ .instantiated ˙ĹŔ ŕ reference ŕé Î ÝÍ ÉÁ .Ë˙ ŢŔ ŕËÁË ŕ ÍË ˙ßË ASCII Ü ĹÍß .Ĺ ËË Ü ŕ Î ß ËÍ˙ ÝÁ ASCII Ü ŢÁ ÉÁ ˙Ë layout ËÁß ˙ .ĹÁ ÜË ÎÁ view áÎÁË ˙Á Ń áÍĚ ŘÔÁ ŢÁ ÜËé Íé ĹéééÁ .ËË Í ˙ß Ë ŕ Î ŢßË ÁÍ ÝÍ ĂÍ ß .ĹÁĚ ËÁß Í Load() ˙éË ÝÍ ÍË Ü ÎÁ Elements áÍÁĚÍ ˙ÁÍ Form Đ ÍË Hooks ËÍßé Úé Îé ŕé ß Ë non-final ˙Ë Ŕ .Ëß˙ ŕ store() ß ˙éééé ˙ÁÍ ÁÍ Ŕ ËÁß ˙ .ËË˙ ÝÁ áÍ Ź Á Ţé ŕß ˙ÁÍ .Ë ˙Í (Form ÎÁ ˙ Ů Á Ôß ) ÝÍ ŘÍ Ý ˙éÍé Load() Ë :Ë˙ áÎ ŕË ÍÎ ĹÍß ŕ ÁÍ Ë ßË ŕ ÝÍÁË ˙ ŹËéÁŕËé ÁË ÍË ÎÁ ŢÁ Í ŕ ASCII Ü Ú ŢËÁß ÁÍ ÍË ß Element Úé ÍË ÁÍ ÍéÔé Í ŕ Ă Í ŢË Ë˙ initialize ÁÍ Form :Ë˙ ˙Ë ÍÁË ÍÎ ÍÎ Ă x, y, width, height, class_name, attribute_name Đé Ýééé ŕ ˙package Ý) Ëß ÔÁÍ ÎÁÍÁ ÜÍßÔ ŕ Ë Đ Ý ß ËËÍ Ň class name Ë ÍË ËÁß ˙ java.swing ŕ ÍË Đ Í .(ĹÁ ŢŔ ŢéßÍŔ ŢÁß attribute_name Ë .ËÍÁË string constructor Ú Đ é ß ÖßÍé < Í ÁÍ attributed-name ÍÁ .ËßÍ˙ Í ŕ constructor .Ëé˙ URL Ú attribute name ŕ ĹÁ ŢÁ Í ÓÍ ŹË ŕ > Í ÁÍ Á ŹËß˙ ŕ ImageIcon ŹË javax.swing.ImageIcon Źclass-name ÍÁ .ËÍ˙ ÍÁÍ JLabel ŢßÍË ŢÍ ˙ËßÍß ŹÜ ˙ÁÍ 10,20,100,200,javax.swing.JButton,Hello World :ËËÍ˙ ÜË ÍÎ Ü ŕ new Element(new Rectangle(x,y,width,height), new JButton("Hello World")); :Ëß˙ ËÁ ÍÎ ŢÍ ŢßÁ ß 10,20,100,200,java.swing.ImageIcon,foo.gif :ËÍ˙ ÍÁÍ ÍÎ Ă ÍË ŕnew Element(new Rectangle(x,y,width,height), new JLabel(new ImageIcon("foo.gif")); ß<http://www.holub.com/images/mooney.jpg> 10,20,100,200,java.swing.ImageIcon, ŕ ÜËnew Element(new Rectangle(x,y,width,height), new Element(new JLabel(new ImageIcon(new URL("http://www.holub.com/images/mooney.jpg") ))); .Ëß˙ ÝÍé Ńééé ˙ÁÍé ÁÍ ÍË ŢÁ ËÍ ŕß ËË ŕÎÁ ÚÁ ŘéÍéé ) ÝÍ áÎ Ň .ËÍÁË Ëßß ß ÜË ÍË ßÍ ßË .Ý ˙ÍÍ .(ŢÁ Ń ß ÝÍ ŕ ÁÍÁ ŢÎ ˙ĹŔ ŢËÍ ŕ) áÎ Ü ß (Ë add_field() Ëé Ë Ú ËÁß ˙ ß "ĹÁ ŢŔ áÎ Ň" ŕěŔ ÎÁ ÍË UML ˙éß ÜË ÍÁËß .ÝÎÁËÍ˙ áÎ Ü ˙ßÍ ŕ ŹËÎ ÁË ÁÍ ËéËéË ÁÍ áÍÁËß Ţ ÍÁ .ËË˙ Ţ ÁÍ áÎ Ü ËÁÍ ł Ü .ËééË˙é Ţé ÁÍÁ ŢÎ ÍË ÁÍ Ý ˙ĹŔ ŹŢß ŕ Ëě ŕß (Ńé Ĺ ÍË) ÍË ĹŔ ŕ ˙ Ŕ ÎÁ ŕ ĹÁ ˙ Í ˙Á ÔßÔ .Ëß˙ ÜÍÁ ˙ ˙ ÎÁ Ń ŹÍÁËß ˙ ˙Ý .Ëß˙ ÜÍÁ PAC ˙ß ÜË : ł Ü ![]() .Ëé Í˙ ÍŐ ÍË Ë ÁÍ Form ĹŔ Ţ ˙ßÍ ÎÁ ˙ ÍË ééé Element ĹéééŔ é Form--already Í ÖßÍ ŕÔ ÁĚ Ëß˙ ÎŔ ˙ÁÎ Á Ĺ ÜÍ ĹŔ áÎ Ü ËÁÍ .Ëß˙ ŕ ÍÍŐ attach(things) Ýéé ĹÍß ŕ) Ë˙ ÜÍÁ ÁÍ ˙ Populated Form ß ŕé ˙ĹŔ Ź"Ń Ü" ĹŔ Ë Ú ŕ Ĺ ŢÁ ŕ things .( ÁÍ ˙ééÁÍ ÜÁßĎß Î Ý ÍË ß Ë˙ áÎ ŕË ÁÍ user interface ËË Ĺ ÝÍ ŢŔ ĐÁ Í ŕ ĹÁ ˙ ÁßÍË attach() Ý .ËÁËÍ˙ Î Element ËÍéé ˙ĹŔ ŕß Ĺ ŮË ŕß .ËË˙ Ń ÁÍ ĹŔ .Ëß˙ ÜÍ ÁÍ attach() ÎÁ Ĺéé ŕé Form ˙éĹéééŔ .ÝéËÍ˙ Î Á ÜË ŕ ŕé ˙éßé ß ŕÁÍŔ ˙ÁÍ ˙ßË ŹËÍ ˙ĹŔ ˙ÁÍ ˙ .Ë˙ ˙ ˙éË ÍÁËéé écollection Map ÎÁ ˙ Ń ˙ÁÍ .Iterator ĹÍß Ź FORM ÍË ÇÍé ÎÁ éĹééŔ ŢŔ ÍË ŕ ÝËß ŕË Á ˙Ë ÎÁ Ţ .Ëß˙ .ËéÎ˙ Ü Form ŕ ÁÍ ÜË Ĺ ˙ĹŔ ß (PUSH ÜË) Ëß˙ "PUSH" ŕËéé .Ëé˙ ÇÁÍ Á ÜË ÎÁ ÁÍ Î ËÍß ˙ĹŔ FORM ŹPULL ÜË ÍË .ĹÁ Í ÍÁßË PUSH ÜË ŕ ÍË ÜË ŢÁ áÎ Ăéé Í ŕ ÁÍ ŢŔ ŕ Ë˙ ˙ Form ŹËß˙ ŕ ÝÍ ŕ ˙ Ŕ ŕ Ţé ÁÍ ŕË ŕ ĹŔ Đ Ĺ ˙element ÍÁ .Ë ŕ element Í ŕ ˙ÁÍé Element ÍË attach() ŕééé .Ëßé˙ ÍŐ ŘÍ ĹÁßÍË ŢÁ ÎÁ ŹËË Ýé Element .ËÍéé˙ Ý ŹŃ Ü ĹŔ ŢËÍ Í ŢËÍÍ Ţ Element ÍË ŕË ŕÍĚ Đ Ý Đ Ý ÍÁ ß ŕ Í ÁÍ ĹŔ Đ ĹéÍ ( Ĺ ) Ĺ ˙ÁÍ ˙ÁÍ ÜÁßĎß Ú displayable ĹŔ ÎÁ ŹË ÜéÍÁ é Ĺé ŕ Ë ŕß .Ë˙ ĹÁßÍË Element Ĺ Ë ÍË ŕË áÎé ÁËé ß "elbayalpsid" ĹéŔ ŕ ŹË˙ ŕÍĚ ÁÍ Ĺ Ý ŕ ˙Áŕ Í .Ëß˙ ĹÁßÍË áÎ ŕË ÎÁ element ÉÍ ĹÁ Ĺ Í ŕ ËÎ˙ ˙JComponent "displayable"Ź ĹŔ ĹÁ ÍË ÁÍéŔ ŢÁßé ˙é component ÉéÁ Ý ÍË ÁĚ ŹËß˙ Ü component ŕ ß ŢŔ ŹÝËß ŕÍÁ Í ŕ ŕß .ËÁËÍ Î ÁÍ component Đ ß ŹĹ ÁÍ widget Đéé ß ŕËß Ă ÁÍ ˙ ÜË Źŕ ÁÍ Swing_widget ËÁß ˙ ŹËß˙ ŕ visual-proxy() ĹÁßÍË ŕ ˙ÁÍ ĹŔ Đ .ËÁËÍ Î .ËËÍ˙ ŕÍĚ Element ŢßÍË ˙ééÁÍé ÜÁßĎéß Ëééé ˙ Element ÍË ŕË ŕÍĚ Ý Đ Ý ÍÁ ˙invariant ˙ Element ß Ë null ˙ÁÍ Ë ÍÁ .Ëß˙ ĹÁßÍË ŹŕË ŕ ˙Î ŕ ŕ ˙ÁÍ ŹËË Ţ ÁÍ (ŕÍ ß icon..label Ë) Element constructor ŹË ŕËß invariant ĹŔ ÍÁ) Ëß˙ ŕÁ ÝÍ ŕ .ĹÁ ŕËßÎÁ ÝÍ ŕ ÁÍ ŢŔ ÜÍ ĹŔ ŹËß ÜÍÁ ÝÍ ŕ "displayable" ˙ĹŔ ŕ ŕÁ Ó ŕ .ËÎé˙ Ü setVisible(true) invalidate() ĹÁßÍË ÜÍÁ ÁÍ ÝÍ ééé Đ Á .Ëß˙ ÜÍÁ Form ÎÁ Component_base Đ ŕ ĹÁßÍË ŢÁ Íé ŕé ÁÍ activate() ˙éÝé do-layout() .Ë˙ ÍË ÁÍ do-layout() ŕ SetBounds() ß SetVisible() ˙ĹÁßÍË ß ŕËß ÜÍÁ form ÎÁ element ÁĚé ŹËéÍßŔ ÍË Ń ŕ ÁÍ Ëß Ŕ Ëß˙ ŕË Í ŕÔßÍ ˙˙ÁÍ ŕé ˙ééé ÍéÎ "displayable" ˙éĹéŔ ß ĹÁ ĹßÍ Ü ÝÍ ÚÁ ŕé Ë ŕß .ËÎ˙ ÍÁÍÍ Ô ÍÁ ËËß ŕ ÝÍ ˙ÁÍ ÁÍ ˙ÁÍ ĹéŔ .Ë˙ ŢÍ "displayable" Î ŕ ˙ÁÍ ÎÁ ÍÍ áËßÍß ŕËé ŕß ŕ ÁÎÁ ŢÁ ÎÁ Ú Ţ .ËÍÁË ĹÍ Ô ÍÁ ŢÁ ÍË Form ÉéÔé ˙éĹéééŔ ÎÁ ŕËÁË ÇÁÍ Á ˙ÁÍ .ËÍÁË áÍ ŕÔßÍ Ĺ áÎ "set" Ëé é Čé ÎÁ ĹŔ Ĺß ÉÁ ˙ÁÍ ß "get" Ë Č ÎÁ ˙ÁÎ Á ŕËß ŕ Swing JComponent ŕ ˙ÔÁÍ ŮÍÔ ÎÁ Í ŕ .Ë˙ ŕË Á Ý ŘĚ ß ŕÁ ÁÍ Ë ŹÝË Í ÁÍ ÝÍ ÝÁß ˙ Ţ .ËÍ˙ ÝÁ ŕÁ Ë ŕ ÁË Í ˙ÁÎ Á ŕ ˙ Í ŕÁ ŢßË ÁÍ ˙ÝÍ ÍßéÔé .Ë ËÁß ĹÁÍ ÝÁ ŕß ĹÁ ÍË .Ý ŘĚ ˙é Íéé ŢÁ ŕ ÝÍ ŹÝË Í ÁÍ ˙ ÍÎ ÜË áÎ ŕË Ţ ÍÁ ŕ Đ ˙ßÍË Đ ŢÁß ŕ ß ˙ÁÍ ŕěŔ ÎÁ ŕß .ËÍ ËÁß Đé Ú ˙ÁÍ (ŕěÁÍÁ ß áÎ ŕË) ĹÁÍ ŕ Ëß˙ áÎ ŕË ˙ÁÎ Á ËÍßé Đé ŕ reference ŕ ˙ÁÍ ŕ Ĺ áÎ ß ËÍ˙ ĹÍß Ü Ú ÍË ßé ÁÍ áËÍÍ ŕÍ Ý ŹË É ËÍ ÎÁ ŢÔÁ Üß ˙ÁÍ ÍŐ .Ĺ Í Ü Đ ß Ĺ ˙Á ŹÝ ŕééěŔ ÎÁ .Ë˙ Gang of Four ˙ÁÍÔ ˙ßÁ ÎÁ ˙ ˙ÁÍ Áß ÍË áÎé ŕËéé ŕÍ ÍË ß ˙ÁÍ .Ëß˙ ŕ ÜË Ĺ ĹŔ Ôß ˙ÁÍ ŕËéé ŕ ĹÁ ˙ ÍË encapsulation ˙ Í ŕ Ĺ ŕË Á Ü ĹŔ ŕé ééÁ .Ëéé Í ÇÍ ˙Ë ÖÔÁ ŢßË ËÁß ˙ ÜË Ĺ ĹŔ áÎ ŕß ÍÁ Á .ËË˙ Ţ Ë ŕ Í ĹÍß ŕ ŕ ˙ Ý ŹĹ ŕß Íé ÍË .ĹéÁ ŕé ÁË ÜÁ ŕßÁ ˙ÁÍÔ ŕ Ĺ ŢÁ ŕ ŹË Í Ĺ Ëßéß ŕé ˙ ŕ ËÁß ˙ ĹŔ ß ĹÁ non-issue Ĺ ŢËßÎÁ event ÁÍ éÔé ˙éË ŕ ËÁß ˙ Ă Í ŢË .ËÁËÍÎ null Ë ĹÁßÍË ËÍÁË .ËÁË Ň |
| ÝßË Ĺ Ü | ||
| 1 2 3 4 5 6 |