Įß ĶĖ ÄŻĶ Å Ä Ć ’ßąĶ Jean-Pierre Dube ą ß JavaWorld ’Ķ Į ŃßĶĮĖ / ĖĮĖ ąĶĮĶ :ŽĶ ą éé Įßé ĶĖ Ä Ż ą Jean-Pierre Dube ąß įĶ ĪĮ ŻĶ Å ĶĖ ĮĶ Äé Ć ŠĮ ß ą Dube .Ėß ĖĮß Ä Ć ’ßąĶ ą ĶĖ Šé ¬document Šé ¬įĶé ąĪĮĖĮ Ż ’ĮĶ ĮĶ ’ĮąĶ ß ĖĖ’ Éß Ė ’ ’Ķ print ’ Š ß page .Ė ßĄ Java Print API Ų ß Åß Ō ąĶĖ ĮĶ ’Ō ’ Å ą ĶĖ ĪĮ Äé ’éßĶé ąé ’ĮĶ ą Java API Ų ’Ė ąĶĶĖ ÜßĮ Å ĶĖ ĶĖ ß ééĖ ŽĮ ’Ė ŻßĖ Å ĶĖ .Ė ’Ą Ė’ ąĖ Į Ą ąĖé ŽéßĶ Ž ĮĶ Ī ą ą ŽßĮ .Ė ’Ķ ą Ä Ć Żß Å .Ė ÅĶĖ ĮĶĄ Ć ĖĮß ’ ¬ÅĮ ąĻßĶ Ķ ąßéé ąé éĮĶ ŻéĮßé’é ¬Ėéé ’ßąĶ ą ÖßĶ ąĮ ĪĮ Ü ŽĄ Åé ąß ¬ŽĄ ąß ’ĮĶ ąĖ Į Ü ’ĶĮĪĮ ¬ąĻßĶ ŽĮ ’ĖĪ .ŻĖ Éß ĮĶ Ć ’ ą ’ Ė Ž ĶßŌ ß Żéééééé (IDE) éééééé éééé ’ééßé ąééĶé Ōééé Śé ĪĮ Žé ŻĖßéé ąĖ Į Žß Üßģ ą ß (JDE) Java Development Environment ĪĮ ’ééé ’éĻß ’ĮĶĮĖ ß ¬Ė’ Ė Ķ Emacs Ķ ĶĖ ŃĖßß ą .Ė’ Ķ ß Éß Å ß Ė Ü ¬ debugger Ś Ü ’ßé ĶĮĪĮ Ś Ant .ŻĖß ąĖ Į ąĻßĶ ŽĮ ą ’ĮĶ Ant 1.1 ĪĮ Ž Ant ¬make ŲéĶé ’éß .ÅéĮ make ąé ąé ß Ė’ ’ß ąĶ ’ĮĶ ĶĖ Ant Žßé ß .Ėé’ ŲĶ ĮĶ ’Įß XML Ü Ś ąĖ Į ’ ĮĶ Īéé éŻĶé Åé Ķéé ą Ü Į Ü ’ ĮĶ ĮĢ ÅĮ ąĖ ą ß Įß ß Ėééé Ķé ą ĖĮß ’ ĖĶĮĖ ’Ą Ant ĶĮĪĮ ĶĮ .Ė’ Żééééééé ąééééééé ĮĶ ŽéééĶééééééééé Üééééééééé Ķéééßééé Ķéé éĮ ²° ¬Javaworld) Automate your build Process Using Java and Ant .Ėģ ąŌ (²°°° :Ėééé’é ’éĶéé build.xml Żé ą ĮĶ Ž Ant Ü Åß -± Å Listing1:build.xml įĶßé ĶĮĖ Ė ą Ė ŃßĮĶ ¬Ė’ ąĖ Į Ž Ant Ü ĪĮ ĶĮ .ĖééĖ Ķé Ėß ’Į įĶß ĶĮĖ ą ĖĶĮĖ ĶĮĶ Ü ’ ĶĖ ą ĮĶ ’Į ** ± Üéé ** ąé ąĻßĶ ŽĮ ’ Ķ Ķ ąĶĶĖ Ķ ÅŌĮ Ć ’ĮĶ .Ė ąĮĶ ąé Unit Åéé .ĖĖ ŻĮ ĮĶ Unit Å ŻĶ Ė Ė Įß Šß ąĶ Ķ ąßéé ąĶéĶĖ ĮĶ Ćßé Ü ŽĖ ą Ė’ Å ĮĶ ąĶ ĪĮ Ė ąß ą ¬ąß ŽĮ ĶĖ .ĖĖ’ ąģĮĶĮ ą ąĶ ĪĮ ąĖ Į ĪĮ Ėßé Ėé Åéé ’ĮĶé Ž .ĖĄ ’ ÅĖ Å ą ŌßĶ ’ ’ĶĮĪĮ .ŻĖĶé ąĖéé éĮ Ėéé’ Å ’ĮĶ ’ß ĆßĶ ß Ķ Ś ą Junit3.2 Ėé ĶĶ ĖĖ ĪĮ ą ą Ś ÅĶß Ė Å ’ĮĶ ĮĶ Junit Å ß ŃßĶ ßĖ ŽéĮ .ŻĖ’ ÉĶ ¬ÜĮĖ Ō ĪĮ Ė ą Ś ß ŽßĶ Ō ĪĮ ĶéĮ .ĖéĶĮĖ ŁĶ ĶĖ Å ’ ’ĶĮĪĮ ą ŠĮ Ķ Å Šéé ¬ĖéĶĮĢ Ėß Å ąĶ ŽĮß ą ą Ś ĶĖ ĮĶ Ėß Å ’ĶĮĪĮ ĶĖ Ėß Å ’ĶĮĪĮ ŽĖĮĖ ĶĮĶ ĖĮß ’ ¬ĖĖ ŻĮ ĮĶ Ė ą Å ’éĶĮĪĮ ¬ąß ŽĮ ĶĖ .ĖĖ ŻĮ Ī ĮĶ ą ą Å ĶĖ ą Ś Ņßééé Üéé ’éĖĪ ĶßÕ ą .ĖĖ’ Ž ĮĶ ą ą Å ¬Å PrintFrameWork ąééĶ įĶßé éĶéĮĖ ĶĖ .Ė ą ± Ü ą įĪ ĆßĶ .Ė ĮĶ ąĻßĶ ŽĮ ą ŌßĶ ą ĶĪ ’ ą ĖĮß ’
.Ėéé ÖßĶ ĮĶ ’ß ąĶ ĖĮß ’ ¬ĖĮĖ’ ĮĶ Ž ą ŽßĮ ąé ÅéĮ ŻĪ ĶéĮ .Ė ĪĄ measurement ’Š ą Ü ĮĶ Ž Ķ .Ė ąĮĶ UML Diagram 1 ą Ė ĶßĶ ĮĶ Ć ÉĶŌ įĶ ąĪĮĖĮ Ż ’Š Ü ĆßéĶéé ĶĖ ĶéĖ Š Ķ Žß Ė Ü ĮĶ įĶ ąĪĮĖĮ ’Š Ė ¬Ė’ įĶ ąĪĮĖĮ Ż Ć PFunit Š .ÅĄ ą ą Įß ß ’ .Ėéé’ Ü ąĮĖ ĶßŌ Ä Å ĶĖ setPoints() ß getPoints() ’Ė ß Ėéé ’é ÜéĖé getPoints() ’ßĶ Ō ą ĮĶ įĶ ąĪĮĖĮ ĖĮß ą įĖ Ėé é ’ßĶ ĖéĮĖĶé’é Ķé įĶéé ąĪĮĖéĮ ĖĮß ą ĮĶ Ō ą įĖ Š .ĖĶĮĢ setPoints() Żé ’é ’Ė .ĖĮąĖ ŻĮ PFUnit ĶĖ ąßĮ ’ Å ą ’éééé é double ĶĮĖ Ś ĪĮ ß PFUnit Š ĪĮ ŽĖßĶß ŽĮß Ėé é ¬ĖĖ’ ĶĮĶ Ķ ĮĶ ’ßĶ ĮĶ double ĶĮĖ Ś ’ ß .Ė’ ąéß ĖĶĮĖ ĶĮĶ įĶ ąĪĮĖĮ ĖĮß ĶĖ ą įĶĮĖ ŽĄ ą Ė’ ÓĶ ĶßŌĮ ĶĖ ’Ķ ’Ė ĪĮ ’ ą ą double ĶĮĖ Ś .ÅĮ ąĖ ’Ķ ŽĄ Š ’ĮĶéĮ .Ėßé’é ąé éĶ ĶÕ ĶĖ ČĮ ÅĶß ÅĮ ąĖ Ü PFInchUnit Š .ÅĮ ąĖ ÉĶŌ ² Å ĶĖ PFUnit Ėßé įĶéé ąĪĮĖĮ Ż ’ĮĶĮ ’ĮĶ ĮĶ ’Ą ŃßĶ ’ß ąĶ įĖ Ń .Ė’ ĮĶĮ ĮĶ PFInchUnit Š Ń ŽĮ .ĖĖ’ Ž
implements the PFInchUnit class. ÜéĖéé ąéŌéé ąé ą ÅĮ (ČĮ) ’ĖĮß ąĖĖ Ž Ė ĶĖ “¹ Ō ĖĪ Ō ą Į ÜĖ ĮĢ ¬ĖĶĮĖ Ėßß ČĮ Ķ ĶĖ ąŌ ·² .ĖĮąĖ ąé éĖ ßĖ PFUnit ąéé .Ė ĆĶ ·² ĶĖ ĮĶ ČĮ ĶĮĖ ą ÅĮ ŽĮ .ĖĖ’ Ž ĮĶ PFPointUnit ß PFCmUnit ’ ą ĶĖ ąĪĮĖĮ ĖĮß ééĄ ĪĮ ¬Ė Ü ĮĶ PFRectangle ß PFSize ¬PFPoint ’Š Ė Š .Ė ąĖ Į ĶßĢ įĶ ąĪĮĖĮ Ż ’Ė Å Ń ’ĮĶ ĶĖ Ėßéßé Ōéé ’éŠé ąé Åééé įĶé éé ’ĄĶ PFPoint Š ß ŲĢé Īé ĮĶ įĶĖ PFPoint ĖĮß ’ PFPoint ¬ .ĖĶĮĖ Java Print API ĶĖ ĮĶ Ė Ż Ķ Ż Ž ĮĢ Ė įĶĮĶ ’Ķ Å Žß .Ė ąĮ .ĖĪ’ ą ĮĶ ’ĮĶ ’ ÉĶŌ Ž ĶĮ ¬ŻĖ ĶĮĶ Š ŽĄ Ėß é .Ė ąĖ Į PFSize Š ĪĮ ¬ĆßĶ ĶĖ ąĪĮĖĮ Ś ŽĖĮĖ Ž ’ĮĶ ßĖ ĪĮ ĖéĖ’ ŽĮ ą ą Ė’ scale() Ė ¬ŽĄ Ķ ß Ż ’Ļß ’ĮĶ scale() .Ö ĶĮ ’ĶĖ ß ÓĶ ĶÕ ĪĮ ’ :ĖĖ Ķ ĮĶ ąĪĮĖĮ ą .ÅĮ Ė Å (ŽĖĶ ŪĶĪ) ŽĖĶ ŻßĪ ąĖéé éĮ Ü ’Ō ąŌß Ś Ń ’ĮĶ PFRectangle Š ĪĮ ĖĮß ’ Ėéé ÜŌ ąĪĮĖĮ ß Ü ŻÕ ’ĮĶ ĮĶ ŃßĶ ßĖ PFRectangle .Ė :Ė’ PFPoint Šé ĪĮ é ¬Ėéé ŻÕ ąĮĖ ĶßŌ ĮĶ Ö ĶĮ ß ÓĶ z ß y Żéé .Ėéé ąĖ Į ąĪĮĖĮ ŻÕ ’ĮĶ PFSize Š ĪĮ ß Ü ŻÕ ’ĮĶ Śé ĪĮ PFRectangle ¬Ėééé’é ŻééÕ ĮĶ Å ß ąĪĮĖĮ ĶßŌ ą Å ĮĶ Üéé ß ąĪĮĖéĮ ’éĮĶ ’ß Ė’ ąĖ Į PFSize Ś ß PFPoint .ĖĶ ĆßéĶéé ĶĖ ą Ė’ įĶ ąĪĮĖĮ Ż ąĪ ĶĖ ’ß ą ŽĮ é ¬ĖéĖ’é Üéé ĮĶĄ ŠĮ ß ą PFPoint .ÅĮ ąĖĄ ĶĖ ĮĶĮ ą Ä ß PFInchUnit Üéé ’é Į įĶ ąĪĮĖĮ ’ ĖĮß ’ PFUnit ąß PFRectangle ß PFSize ¬PFPoint ąßéé .Ė ĖĮ Ėß ’ĮĶ ĮĶ PFCmUnit ĖéĮßé PFDocument Šé ąĶĶĖ Ž įĖ Ę .Ė ’Ė Å Ķ .Ėß PFDocument Š Äé ’é ’ ą ’Į Š ĖĶĮĖ ĶĮĶ PFDocument Ä Ć ŠĮĶ ĶĖ ŽßĶĖ ąé ’éé .ĖĶ’ ÅĶß ŽĄ Ōß Instantiation ß export Å :ŻĪĮĖĮ’ PFDocument Listing3: PFDocument ąĶééĢ ’ĮĶé .Ėéé ’ Ü ą Ķ Ś Ė ÜßĮ ąß ĶĖ Š ŽĮ .(Ė ąĮĶ ³± ĶŌ ą) Ėß’ ąĖ Į Vector Š Ś ĪĮ Å ąĶéé ą Ėß’ print() Ė ą ³ Å ³¹ ß ³ø ’ĶŌ ĶĖ flag ßĖ Š .ĖĖ Ž ĮĶ Ä Ģ ß ąéé Ķ ą ĖĶ’ (µ“ ’Į “² ’ĶŌ) header ’Instance ą Åß Š .ĖĶĮĖĶ ĶĖ ĮĶ Ģ ą ĮĶ Å ą ŻĮąĖĶ ąĮ ĮĶ įĖĪ ’Ė ³ Å ĶĖ ±³¹ ß µ¹ ’ĶŌ Ž ĮĶ ŽééĮ ŽéĮ é (·¶ ĶŌ ĶĖ ) addPage() Ė .Ė’ ŲĢ ąĮ ąé (“ø ĶéŌé ĶĖ) addPage() Ė .Ė ąĮ ąĖßĶ ą ą Ś ą ĖĖ’ ą Ķ ĮĶ ÅĶß ĮĶ ŽĄ ąĶ ą ’Įą ĪĮ Š ą ĖĖ’ ĮĶ ŽĮ ŽĮ Ė ßĖ ’ removePage() Ė ßĖ .Ė ąĮ ą Ś ¬ĖĖĶ ĖĶĮß Ė é ĮĶ ąééé Ś (±°° ĶŌĶĖ) removePage() Ė Ž .Ė’ addPage é ĮĶ ąééé (µ±± ĶŌ ĶĖ) įĖ Ė ß Ė’ ŲĢ ą ąĶ ĪĮ ąĖ Į .Ė’ ŲĢ PFPage ’ ĪĮ ąĖ Į ĮĶ Äé ß ąééé ’ąĶ showPageDialog() ß showPrintDialog() Ė ßĖ ¬ĖéĶĮĖ ĶĮĶ ³ Å ĶĖ ²±ø ’Į ±øø ’ĶŌ Ž ą ’Ė .Ė’ ÜĶ Žéééé ĮĶ ŻĪ ’Ķ ĮĶ ß flag Ō Ą .ĖĖ’ Ž ĮĶ ąĶ .ĖĶĮĖ ąĖ ĮĶ ąĶ Ń ÅĶĖ print() Ė .Ė’ ąé ĮĶ Äé Ćéé (³ Åééé ĶĖ ²¹¶ ’éĮ ²³“ ’éĶéŌé) print() Ėé é .ŻĪĮĖĮ’ Ė ŽĮ ą ’ Ü .Ė’ Ś Java Print API ąĶééĢ Åéé for ąé ĶĖ ’ ŽĮ ĪĮ .Ėß’ ĖĮ PFPage ’ Ś ĮĖ Į pageFormat ’éé Šéé .ĖĖĶ’ ąĖ Į Ėß Ä Ė ą ’Įą Ķ Ž ąĶé ĶĖ ą Ė’ ą ÅĶ ÅÕ ąĖĶĮĖĶ ĶĖ ’ ŽĮ .Ėß’ ĖĮ Ķé éĮĶé ąééé Ķßé ĶĖ Ō ÅÕ ŽĮ ĪĮ .ĖĖĶ’ ŲĶ Page Setup .ĖĖĶ’ ąĖ Į ¬Ė ąĖ ŲĶ showPageDialog ÜĶé éé Ėßé’é ąĖĮĖ Ėé é ą Ķ ĮĶ ÅĶß ą Å ĖĮĖ ąĖßĖ Š É ĮĶ ĶĮĖ Ė ¬Ė Ī ąĖßĖ ĪĮ Ķ ĮĶ Å ąĖßĖ ĶĮ .ĖĖĶ’ Ėé é .ĖĖĶé’é ĖééĮ printerJob ’éé ŽĄ ĪĮ Ėéé .ĖéĮĖĶé’ Ī ß ĶéŌé ĶĖ Š .Ė’ Ü printerJob ’ ą ĮĶ ąĖßĶ Ż setJobName() Page Setup ąĶééé ¬Ėß true ĶĮ .ĖĖĶ’ ÜĶ showPageSetupFlag ¬²¶² .Ėß’ ąĖĮĖ Ń ĶĮĶé ąĖéßĶ ĶĖ ą ĮĶ ’ ’ ą Ė ĖĮ ĮĶ Book ’ Ė Š ĪĮ ĮĶ Åé ’ ą Ėß’ ’Įą ĖĶĮß ąĶ .ÅĶ ĖĮßĶ ĶĖ ¬ĖĶĮĖ if ŌĶé Ķßé Ė Ś ¬ą ŽĮ ĶĖ .Ė’ ąĮ Book ’ ą pageCollection ąĶééé ĶéĮ .Ėß ąĖ Į Ė pageFormat ŻĮĖ ĪĮ ą Ė’ ÜĶ ĶĖ Ėé’ ŲĶ ĶĶ ą ąĖßĶ ą Ķ ¬Ėß ąĖĮĖ Ń PFPageSetupDialog ąé ÅĶ ĪĮ ÅĶßĮ Ķ ĶĖ .ĖĶ’ ĶĮĶ Page Setup ÅÕ ąĖßĖ ĶĖ ąĖßĶ Å ŃĪĮĖĶ ą ą .ĖĖĶ’ ąĖ Į ąĖ ŲĶ page ĶĖ ą ĶĖ ²ø± ĶéŌé ąé) Ė’ ąĮ printJob ’ ą ĮĶ Book ’ ¬ĖĶ Ž .(Ė ąĮĶ ³ Å ĖéĮß’ printerJob ĪĮ ą ’ ’ try/catch Å ĖĶĮß ąĶ ¬Ėßé ÖßĶé Äé ĖĮĶ ąĮ ĪĮ Ü .Ėß’ ĖĶĮß ¬Ė Ä ĮĶ ąĖßĶ ąĶééé ¬Ėßé ąĖé ŲéĶéé ĶéĮ .Ėé ÜĶ ĮĶ showPrintSetupDialog Äé Ü ĖĮß ’ ĶĶ ¬ąĶ ŽĮ .Ėß’ ąĖĮĖ Ń JavaPrintDialog ¬³ Åéé ²ø· ĶŌ ĶĖ if Ķß Ė .Ė ÜŌ ĮĶĄ ß ąĖĮĖ ąĮĖĮ ß ÖßĶ ĮĶ ĮĶ true ĶĮĖéé Äé ąĶééé ĶĮ .Ė’ ÜĶ ĮĶ showPrintSetupDialog .ĖĪ’ Ųß ĮĶĄ ÅĶßĮ Ķ ĶĖ ß Ė’ ĮĖ ąĮĖĮ Ä Ü ¬ĖĮĖĶĶ éé Ößéß ŽĮ ĮĶĪ ŻĮą ß ĮĶ printHTML() ß print() Ė ßĖ ąĶ ĮĶ éĄ ’ß ąĶ .Ė’ ąß ŽĮ ąĖßĖ ĪĮ Ķ ĮĶ ß ąĖß ąĖ Åééé .Ż’ ą ąŌĮĶ ŽĮ ĶĖ Ė Ė ’ß Ż’ ĶĮĢĮß ą ą for ą Ś Š .Ė’ Ėß ĮĶ HTML Ü ą Ķ Å PFDocument ąĖéßĶé ą Ķ ’ĮĶ ĮĶ HTML ’Ė ą Ķ Ķ print() Ė ĶĖ ą ’Įą ąéé Ķ ’ĮĶ ĮĶ HTML ’ Ķ ą ĶĖ for ą Ś ¬ .ĖĶߥ’ ÅĖ ŽĮ ĶĖ ’ Ķ ą ÅĮ Ņ ¬UML Diagram 1 ą ŁĖ ’ .ĖĶߥ’ ÅĖ .PDF ąĮß ß Ė HTML ąĮß Ė ąģĮĶĮ ĮĶ ŻĪ Ė Ė ąĶĪ Žéé printPreview() Ėé é ’éĶĶé é PFDocument Š ĖĶß ĶĖ Ę ĮĶ ąĖéßĶé Ė ŽĮ ¬Ėß’ ąĖĪ ĮĖ printPreview() Ė ą .Ė’ ’ééßé ąééĶé .ĖéĖ’é Ńééé (PFPrintPreview) ĶßĶé ąĶéé ĶĖ .ĖĮĖ ŻĮß Éß Ż Å ĶĖ ĮĶ printPreview() PFPage Š Śé ß ÅéĮ Åéé ĪĮ ’Įąß ąĖßĶ Ś .ÅĮ ą Ķ PFPage Š ’ĮĶ PFPage ĪĮ instance Ś Ė Ä Ć ĶĖ .Ä Į ĪĮ ’Įąß ą ’ééßé ąééĶé ÜéĮĶé ąé ’ Ü .Ė ĖĮ ąĖßĶ ĪĮ ą Ķ įĪé ąĶéĢ ’ĮĶ Vector ’ Ś ĪĮ PFPage Listing 4: PFPage .ŻĪĮĖĮ’ ąĖéé Į Ä Į ŽĖĶ ŲĢ ß ąĮ ’ĮĶ Ė ŽĖ ’ ß Ä Į ±µ¶ ß ±³° ’éĶéŌé ĶĖ ĖĮß ’ ĮĶ Ė ŽĮ ’ß ąĶ ÜĮĶ .Ė’ .Ė ąÕ “ Å ¬ŽĄ Åéé ß Ģ ąĪĮĖĮ ¬ą Ė ą ’Ķ ĮĶ įĪ ąĶĢ Å ąĖéé éĮ ¬Ėéé’é ąéģĮĶĮ ĮĶ įĖéĪ ’Å ą PFPageFormat Š ĪĮ Äé ’éĶ ĮĶ ą ĖĖ’ ąĪĮ PFPageSetupDialog ą Š ŽĮ .Ż’ ąĖéé éĮ ąé ’ĮĶ įĶĖ ÅĶ ĪĮ ĶĶ ĶĮ ß .ĖĮĖĶ Ī ß ą Ķ ĮĶ Ś ĪĮ ąĖ Į ĮĶ ĖĖ ’Ķ ĮĶ ĖĮß ’ PFDocumentPrint() Ė ¬Ė ’ĮĶé é Ėß ąĶ Ė ĶŌ Ė ą Ė Ķß .Ė ąĮ Ė ĶŌ ß .Ėééé ŲéĶé ĮĶ Ģ Å ß ÅĮĶ ¬Ä ¬Ž ¬ ’ą ą Ķ .ĖĖ’ ĶĮĶ Ėß Ž ĶĖ ĮĶ Ń ß Å Ķ PFPageFormat ŻééÕéé ¬ąéé ĪĮ PFPageFormat Ž Ķ ¬ą ÅĶ Ž ’ĮĶ ąĮĶ .ÅéĮ setPageFormat() Ė ĪĮ ąĖ Į PFPageFormat Ž ß Ķ ĮĶ clone Śé Ėß’ ąĖĮĖĶĶ getPageFormat() Ė Ōß ą PFPageFormat ’ .Ė ąŌ ĖĮß ’ ĮĶ PFPageFormat Š ÉĶ ³ Å ĶĖ .ÅĮ ’Į ĶĖ ±³± ’éĮ ·¹ ’éĶéŌ ĶĖ ą Ė print() ĖĮß ’ PFPage Ń ŽĶ ŽéĮ .Ėßé’é ÜĖ Graphics2D ’ ą Graphics ’ .ÅĮ ąĖ ĒĶĖ “ Å ’ééé ’ééé ¬Šé ŽĮ ĪĮ ĮĶéĪ ĖĶ ÅĶß Ė ’ĮĖ Į ĶĖ Ė ÜĖ .Ė’ ĶĖĶ Graphics2D ’ ĮĶ Ėß PFPrintObject ’éĖé é .Ėéé’é ĶĖéĶ ĮĶ éé ’éé Į ą ¬ąĶ įĖ Å Ķé :ĖéĶ’ ĮĶ ’ Ż ąĖ ŽĮ ŠĮ Ķ getFooter()/getHeader() ÅĶßéĮĶ ĶĖ .ĖĶ’ ĶĮĶ ąĖ Į ĖĶß ĖĖß null ĶĮ ą /ą ĶéĮ .Ėéé’ ĮĶ non-null ą /ąĶ ’ PFDocument ĪĮ Ė .ĖĶéé ’é ĶĮĶé ąĖéé Į ĖĶß ąĖßĶ ą /ąĶ ¬Ėß Å Ź Åéééßé ’ĮĶ .Ėß’ ąĖĮĖ ĶĮĶ Ėß ’ ĶĖ ą ß ąĶ .Ė ąĮĶ ² Ü ą ŁĖ
ąĶééĢ ’éPFPrintObject ’ ĪĮ ą ŽĮ .ÅĮ print ą įĖ ąĶ .Ė ĶĖĶ ĮĶ Ėß ą ĖĮß’ pageObjectCollection ĶĖ ąĖ ĮĶ ’Įąééé PFPage :ŻéĪĮĖĶ’ Ė ĶĮĶ Žß ą ’Ō ĶßĶ ą Ü Üéé PFPrintObject ééĮ ’ ’ĮĶ Container Ś Ė ß ąĖĶ ŲĶ ĶĖéĶ ĮĶ ąééé ééĮ ’ ¬ĖĖĶ’ Ü print() Ė ą .Ė’ ŽĮ ĪĮ ą ¬Ė’ ąĶĢ ĮĶ ą ’Ķ ĮĶ PFPage Š .Ė’ .Ė’ ąĖ Į įĪ ąĶĢ ’ĮĶ ¬ŻĖ’ Éß ĮĖ ą PFPageFormat Š PFPageFormat Š ĪĮ ąĖ Į ą ’Ķ ĮĶ ŻÕ PFPageFormat Šé ĪĮ ’Įąééé ÅéĶé ’ąĖĮĖ Ž ąĶĢ ß ŻÕ ’ĮĶ ß getPageAreaOrigin() ’éĖ ĪĮ ąĖ Į PFPageFormat .Ė ąĖ Į ßĖ Ķé .Ėéé’ ą Ģ ĮĶ ’ ’ ß ÖßĶ ąŌ getPageAreaSize() .ĖĮąĖ ŲĶ µ Å ĶĖ ²³¹ ’Į ²±² ’ĶŌ ĶĖ Ė ŽĮ Listing 5: PFPageFormat ĶĖ Ī ĮĶ (µ Å ¹µ ’Į µ² ’ĶŌ) getPageFormat() Ė Ž Š ŽĮ ’éé ąé ĖééĮßé ’é getPageFormat() Ėé é ĪĮ ąĖéé éĮ .ĖĶĮĖ Ķ ’éé ŽĖéĮĖĶéĪé ĪĮ Üéé .Ėééé ĮĖé ’Ķ Ė java.awt.PageFormat ß Ž ĮĶ Ģ Å ĮĖ Į Ė getPageFormat() Ė ¬PageFormat landscape Åéé ĶĖ Ėéé Ģ ĶĮ .Ė ŻÕ ĮĶ Ģ ąĪĮĖĮ ß ą .Ėß ą Ö ĶĮ ß ß Ä ß ’ą Ė ¬Ėß ĶĖĶ ĶĖ .Ėééé ą ĮĖ Ė PFDocument Š print() Ė ĖĶß ĶĖ ĮĶ ’ Ę ß Äé Ćéé Ž ŠĶ Į Ś ŽĮß getPageFormat() ĪĮ µ Å ²·· ĶŌ ąĶééĢ ’ĮĶé ’é ß Š ĪĮ ą Ą ĪĮ .Ėß’ ąĖ Į Java Print API Ćéé ĶĖ ąééé ÅéĶé ŻééÕ ’ĮĶ ¬ĖĮąĖĶ ąĖ Į ą ÅĶ Ž ’éééééé ÅéééĶééé ąééé ĮĶ Ėßéééßééé ÅéĶé Ėéé Java Print API .Ė ąĶ java.awt.print.PageFormat :Żéé Åééé Äé Ćé Š ŽĶ ĖĶß ĶĖ ą ąĖĶ ĮĶ ŽĄ ŽĪ Ü .Ė ĖĮ Ä ’ Ķ ’ĮĶ ĮĶ Š ŽĮ Ė .PFPrintObject PFPrintObject Š ĶĖ .ĖĶĮĖ Ėßéß ąéé ĶĖ ą ÅĮ ’ Ķ ’ĮĶ ą Š PFPrintObject Üß ĮĶ ’Į Ō PFPage .Ė’ Ä Ć Š ŽĶ ąĖ ŽĮ Ķ Ü ŠéĮ Ķé ŽĄ ’éĮĶéŌ .Ėé ą ąß PFPrintObject Š ĪĮ ą Ė’ Üéé Åééé .ĖéĮąĖé ąĖĮĖ Éééßé ³ Åé ĶĖ ą ÅĮ ’Ķ ’ßĮ .ĖģĶ ąÕ List 6 ĶĖ ĖĮß ’ ĮĶ PFPrintObject Listing 6: PFPrintObject ĆĶ ’ßĮ ’ĮĶŌ ĖéĖ’é ąĪĮ PFPrintObject ą ą Ė’ ąģĮĶĮ ĮĶ ’’Ļß ĆĶ ’ Ś Ķé éééģé ’éé Ķ ą ĶĖ .ĖĶ Ķ ĶĖ Ī ĮĶ PFPrintObject Ķ Ķé ĶĖ ’é éĶĖ Ķé Ś ĖĮ Ī ĮĶ PFPrintObject Ķ ĖĮß ’ Å ĶĖ ³“ ĶŌ ą ) Ż’ ąĶĢ Vector Š ĶĖ ĮĶ Ķ ģ Į Ž .ĖĶ .(Ėß ąĮĶ ¶ ĮĶ (child object) Ķé ééģ Į ą ĖĖ’ ĮĶ ŽĮ ŽĮ ą Ė ßĖ ¶ Å ³“· ĶŌ ĶĖ add(PFPrintObject) .Ė ąĮ Ą ą Ėģ ŲĢ ĪĮ ąĖéé Į ß Ė’ ąĮ printObjectCollection ą child object Ś ĶĖ Ķé é ééĮ Ž ĮĖ .Ė’ Ü Ķ ’ ą ĮĶĄ setParent() Ė remove() ’é ĶĖ Ė .ÅĮ ąĖ Ś Į ĪĮ ’ĮąĶĪ ŽĖĶ ĶĖĶ ŽĪ ĮĖ ’ Ō Ė ŽĮ .Ė ŲĢ ĮĶ Ķ ģ ’ Ś ą ĖĖ’ ąĪĮ ą .Ė’ Üß įĖßĶß ŽĮß ĮĶ (source object) ŽĖĶ ĶĖĶ PFPage é PFDocument ĪĮ Ķé ąĖé ’ PFPrintObject ŽĖĶ ĶĖĶ ĖĮĶ parent ’éé .Ėßé ĶĖéĶ Ėß ĪĮ Ķ ’ ą Å Ė ’ Ķ ĮĶĪ ÅĮ Ķé é ÅŌĮ ’ĮĶ) .PFPrintObject ß Ė PFPage ’ Ś ĖĮß ’ .(Ėģ ąĮĶ Żß Å ą ąé ĖĮĖ ŻéĮßé Éééß ¬ÅĮ abstract ’ Ś ¬PFPrintObject ą Ą ĪĮ .Ė ĶĖĶ ĮĶ Ėß ĖĮß ’ subclass Ś ąß ąé ĮĶ (¶ Åééé ĶĖ ²±² ’éĮ ±±µ ’ĶŌ) computeSizeAndPosition() Ė .Ėééé ĮĖé ¬Ėéé’ ą Ķ ’ ą Å ĮĶ ’ Åß ß ąĪĮĖĮ ąĪĮĖéĮ ß ĮĖ drawSize ß drawOrigin Į ¬Ė Ü ąĶ ŽĮ ą .Ė’ Å ĮĶ subclass ’ ’éé ĮĖéé ß ąĪĮĖéĮ ŽĖĶßĮ ÅĖ ¬Åß ß ąĪĮĖĮ ą ĶĖ ŻĖ ŽßĮ PFPage ’é ¬Ķ ’ ą Ż ąĮ ’ĮĶ .ÅĮ (PARENT OBJECT) Ķ ’éé ąééĮ ĪĮ Š .Ż’ ĮĖ ĮĶ isChild() Ė ¬PFPrintObject ÅĮ .parentSize ß parentLocation :Ėéßé’é Åééé ’ ßĖ ¬Ė ĮĖ Ķ ’éé ßĖ ŽĮ ¬Ė ą ĖĮß’ ĮĶ fill ß sticky ’Åß ą .ĖĶ ĖĮß Ś ĶéĮ .Ėéé ŁéŌ ’ ĖĮß ’ ą ÅĮ įĶĶĮĶ Å ÜĶ ¬ŻßĖ ŻĖ ąéééé Ķ ’ ŠĮ Ķ Åß ’ ¬Ė ’ įĶĶĮĶ Åß .Ė ĖĮß ą ą ą Å ÅĶßĮ Ķ ĶĖ ß ĖĖĶ’ .(Ė ąĮĶ ¶ Å ĶĖ ±µµ ’Į ±µ± ’ĶŌ ą) ÅĮ ą ¬Żß ąĶ ąééĶé ( ¶ Åéé ĶĖ ±¶ø ’Į ±µø ’ĶŌ) fill resolution fill ÅĖ ÅĶß ĮĶ Ėß Ķ ’ ą ĖĖ’ ąĪĮ Ķ ģ Į ą Ą .ÅĮ ŻĶ .Ė Ķ įĖß ’Į ’éÅéééßé įĖßé ß ’Į Åß ß ąĪĮĖĮ ą ’ ß Ż ąĶ .ÅĮ sticky computeSizeAndPosition() Ėé é ąé drawSize ß drawOrigin ĪĮ ąĖ Į .Ė ĶĖĶ ĮĶ Ėß ’ ¬Ė’ ą ĮĶ Ą ĖéĮßé ’ parent object Ķ ą ąßĶĪ Į ’ ą printChild() Ė éĮ ĪĮ Ü Ķ ģ Į .Ė ĮĖ ĮĶ ¬Ė’ ĶĖĶ ĮĶ Ė ą ĮĖ Ķ ĶĖ .Ėß’ ĶĖĶ Ėß ĪĮ Ķ PFFrame ą ŌßĶ print() Ė Ė ąß ĖĖ’ Ž ą ÅĮ ’ ĶĪ Ė : Åß Ė ĮĶ
113| /** .Ėéé’é Üéé ĮĶ computeSizeAndPosition() Ėé ¬Łß Ü ĶĖ ±²µ ĶŌ ’éĶ ĮĶ ą ’ ąß Ė .Ėß’ ĶĖĶ ±“· ’Į ±²ø ’ĶŌ ĶĖ ÜŌ ß drawOrigin ĶéĖéé ĪĮ .Ėééé ąé ĮĖ ÜŌ ’ ’ĮĶ ąĖ ąĖ Į ’éĖé é ĪĮ Ėéé ąééé .ÅĮ ąĖ ąĖ Į ’ Åß ’ drawSize Äé Ėéé ą ’ Ś Åß ŽĖĶߥ ÅĖ ’ĮĶ drawSize() ß drawOrigin() ’éé Ķé ±“¹ ĶéŌé ĶĖ printChilds() Ėé é " .Ėģ ąĖ Į Ėß .Ė’ ĶĖĶ ¬Ė ą ĮĖ Ķ ĶĖ ĖĮß ’ parent ’ ą ĮĶ įĶ ģ Sticky Åß .Ėéé’é ąéģĮĶĮ ééĮ sticky Åéééßé Žéé ’ĮĶ Ė ßĖ Ä Ć ß Ėééé’é Žéééé ĮĶ įĖßéé Ķßéé Ķé éĮĶé setVerticalSticky() ĶéĪ ÜßĖ .Ė’ Ž ’Į Ķß ’ĮĶ ĮĶ ĶĮĖ setHorizontalSticky() :ĖĖ’ Ž ĮĶ ąŌßĶ ’Ķ ĮĶ
.Ė ¶ Å ĶĖ ²µ¹ ß ²±µ ’ĶŌ Ž ĖĮß ’ ĮĶ sticky ’Ė ą é .Ėéé Ž PFPrintObject ß PFPage Į ’ĮĶ ĮĶ ą ĖĮß ’ ’ĮąĻéß ’éąßéé ąé ĖééĮß ’ ’ ĮĶ ’ ą ß composition ĆĶ .Ė ĮĖ ’ Ė é ąéé ßĖ é ÜéŌ Ś ŽĮß ’ ąß Ė Ė ’ĶĶ ĮĶ ³ Ü .ĖĶ ĖĮ Ä Ć ĪĮ ąĖ Į
é ĖééĮßé ’ ¬Ėģ ąĖ Į Ė’ ąģĮĶĮ Ä Ć ą ’ ĪĮ ĶĮ .ĖĶ ³ Ü ĶĖ ą ą ą Ń ŽĶ ĮĶ Ą sticky Åß ß Ė ŲĶ (’Ķ įĶĖ ß ’ĮĖ ’) ÜŌ ßĖ .Ėģ Ž .Ėģ Ž 0.125 ĮĶ ’ßĶ ÜŌ ą ĮĶ éĄ įĖß ß ’Į sticky Åß ß Ė Ž ĮĶ fill Ķ ĮĶ ßĖ Ķ .Ė ŲĶ STICKY_CENTER Ķ ĮĶĄ ąĪĮĖĮ ĶĮ ’ .Ė ąĮ ’ßĶ ÜŌ ą ĮĶ ’ĮĖ ÜŌ ĖĶ ĖĮß Õ ĮĶ Ėß ĶÕ ą ¬ĖĖ Ä Ć ĪĮ ąĖ Į ’ĮĶ ąß ¬PFDocument ééĮ é .ŻĖĶé ąéģĮĶĮ Į ĮĶ Ä ĆßĶ Ķ Ü Żé ą Ė ĶĖ ¬ą .ĖĖ Ą Ü ĶßŌ PFPrintObject ß PFPage Ėßé ąéĶ ą ĮĶ Ą ĖĮß ’ ąß ß Ėß’ ’ĮĶŌ ąß įĶ ąĪĮĖĮ ’éąééßé ąé ¬ĖĮąĖ Ą ÅģĪ ß ÜĮĶ ’ ą Ü .ĖĖ Ō .Ėģ ąß Ä Ć ĪĮ ąĖ Į ą ŌßĶ :ÅĮ Ż Ü ąĖ ąĶ Ķ ą ĖĮĶ ŽĮ .Ėģ ĖĮ PFDocument ’ Ś .Ėģ ąĮ PFDocument ą ĮĶĄ ß ĖĮ PFPage ’ Ś PFPage ’é ą ĮĶ Ą ß ĖĮ Ėß ’ ĶÕ ą ĶĖ ą ĮĶ ’Į ’ .Ė ąĮ .Ėß Ä Ė ĮĖ ĮĶ document.print() Ė éé Üéé ĶĖ Ėßß Å ’ Ė ĶĮĶ ĶĖĄ ĮĶ ą ß ßĖ ÜĮĶ .Ė ĮĶĮ ĮĶ Ķ ŽĮ ąß ą ĖĖ’ Ž ĶĪ Ė .Ėß ĖĮ
Resources |
![]()
Copyright 2001, Java World/International Data Group Inc./PC WORLD Iran. All rights reserved.
|