|
Áß‚‡ ÍË Ä‚ˆ Ýß‹ Å›‹– Jean-Pierre Dube à…Œßœ JavaWorld.com ‚ŸœÍž„‹ à›‚˜œ :݇ͅ› àšŠ ß Ë΂é‹ÿé› ‚œŒÀ Ä‚éˆ Í‚— Ù‚– ‚ƒ ÁÍ ‚›Œ Áß‚‡ ÍË Ä‚ˆ àß›‡› ÎÁ Ýß‹ Å›‹– ÿßÍ Í‚é— .ËéËÿé› àéìÁÍÁ ÁÍ ÞÀ ËÍé—é™› Ößœ ß ÿé‰ÁÍéÔ àéƒßË ÍéŸé„ ÞÁÏ Ëœœ‚› ÿ韂žéŸ˜ÏéŸß ß ‚éÍÁÎéƒÁ ‚éƒ ÁÍ Å‚é‰é•é Ä‚ˆ Ù‚– java Print API .ÅŠ‚‹ ËÁߊ Í…œ‚‹À ¬Ì’‚— ØŸÍ… ß áËœƒÍ—Ÿ„ à‰• ß ¬Print-Preview ÁÍ Ä‚ˆ Ã߈͂žˆ ß Ã™‚– ÿ‰ÁÍÔ ¬Áß‚‡ ÍË Ä‚ˆ ÿ…›‹– µ àß›‡› ÎÁ Ýß‹ Å›‹– ÍË ÍÁÍ– API ÿš‚ƒ ÍË Ä‚ˆ ÿ‡ßÍŠ Ë‚‡ŸÁ ÍË Å™ßž‹ Åž‡ Ù‚– ÞŸÁ .ÝŸ‚›œ ÿ› ÉŸÍŒ… ¬header/footer ‚éƒ ÿé…‚é‰é•é ËŸœÁß…ÿ› ¬Ã™‚– ÞŸÁ ÎÁ àË‚•…‹Á ‚ƒ .ËÍŸ˜ÿ› ÖßÍŒ ÝÍ‚žˆ Å›‹– ÍË ÿ‹Ÿßœ à›‚œÍƒ à™‰Í› .ËŸœ— Ä‚ˆ Üߡ ß ØÁ͘ÁÍ‚„ ¬ÍŸß… .˃‚Ÿÿ› à›ÁËÁ ݇œ„ Å›‹– ÍË ß Ä‚ˆ Ù‚– ØÁËÁ Å‚éŸéŸÎé‡éƒ ÁÍ Java Print API àé— Ë韅ŒÁË ÁÍ ÞŸÁ М‚Œ ² ß ± ÿ‚ž…›‹– ÍË Ãé™‚é– ÞŸÁ ØŽ ß ÅÍË– à— Ë߃ ËŸÁߊ ÍË‚– ‚›Œ Å‚šÔÁ ÞŸÁ ‚ƒ .ËŸœ— ÿ‹Í̓ ÍË ÁÍ high-level ÿ‚éžéŸé˜ÏéŸß Ëßéƒé›é— Ãé™‚é– ÞéŸÁ .ËéŸéœ— ÿƒ‚ŸŒÎÍÁ ÁÍ :Åé‹Á ÜŸÌ Å‚ŠŒ› ÿÁÍÁË Ä‚ˆ Ù‚– .ËÍ— ËÁߊ ÞÁ̓‡ Java Print API Ëß›œ àË‚•…‹Á ÞÀ ÎÁ ÞÁß…ÿ› ÿœ‚‹À àƒ -± .Å‹Á ΂Ÿœ ËÍß› Å‚‰• ÞËÍ— ÍËœÍ Åž‡ à— š‚ƒ ÿŸÀÍ‚— àìÁÍÁ -² Ô‚éƒé…ÍÁ àéœßé˜éˆéŸ Ù‚– ÞŸÁ à— ‚‡œÀ ÎÁ .Print API ‚ƒ ʼnÁÍ ÿ˜œ‚› -³ ÿ‚éś͕ ÍŸ‚‹ ÿœ‚ƒŸ…Œ„ Æ‚ƒ à™ì‹› ÞŸÁ ¬ËÍÁËœ Java Print API ‚ƒ ÿ›Ÿ–…‹› .ËŸË͘ ËÁߊ HTML ‚Ÿ PDF ÜŸƒ– ÎÁ ÿ‡ßÍŠ ÎÁ ÚÍÁËé› àéŸéžé… ÍË à™—Œ…› ÿ‚ž…›‹– ÎÁ ÚŸ Í à— áÍ‚…Š‚‹ ÉÍÔ ÚŸ àŸž… -´ .ËŸ‚›œÿ› ÒŠŒ› ÁÍ àÍŸ’ ß ØÁ͘ÁÍ‚„ ¬à‰• ¬ÚÍË› ÜŸƒ– ÞéŸÁ ‚éƒ Þ‚˜ËœË à‹ß… .؂ԜÁ ܃‚– áÍŸ˜ àÎÁËœÁ Ý…‹Ÿ‹ ÚŸ ÎÁ àË‚•…‹Á -µ ÿ›…‹Ÿ‹ ‚Ÿ ß àËÍ— Í‚— Ëߊ àÁߊ™Ë áÍŸ˜ àÎÁËœÁ ÿ‚ž›…‹Ÿ‹ ‚ƒ ËœœÁß…ÿ› ß…Í… Íé…›Ÿ…œ‚‹ ¬ÈœŸÁ áÍŸ˜àÎÁËœÁ ˉÁß à‹ ÿÁÍÁË Ã™‚– ÞŸÁ .ËœŸ‚›œ ÖÁ˃Á Ëߊ ÁÍ .Ë߃ ËÁߊ ÅœŸß„ ß ÍßÍé› ÎÁ ÿœ‚ƒŸ…Œ„ àœß˜ˆŸ Java Print API .Print-Preview ÿ˜ÏŸß àìÁÍÁ -¶ .Ëœ—ÿ›œ àìÁÍÁ Ä‚ˆ ÎÁ ܃– ÿ‡ßÍŠ àé— ÍßÔœ‚› .Ì’‚— áËœƒ Í—Ÿ„ ܃‚…Í„ ß ËÍÁËœ‚…‹Á à͇œ„ ÚŸ ÎÁ ÿœ‚ƒŸ…Œ„ -· Þ‚éééƒÎ ÚéééŸ ÞÁßéééœéééééƒ Áß‚é‡ Íé˜Á ÿé…é‰ ¬ËéŒ Íé—Ì ÝßË Åé›é‹é– ÍË Íé ÎÁ ÞÀ ËÍé—é™é› ¬ËŒ‚ƒ àËŒ áËœƒ à–ƒÔ WORA (Write Once Run Anywhere) ÁÍ page-setup àÍé‡éœé„ ÚŸ Ä‚ˆ Ù‚– .˃‚Ÿÿ› ÍŸŸ“… ͘ŸË ÝÍ•…š„ ‚… ÝÍ•…š„ .Ë߃ ËÁߊ Þ‚‹—Ÿ ‚ž›Í•…š„ Ý‚›… ÍË à— ËÍ— ËÁߊ àìÁÍÁ ÜéŸéƒé– ÎÁ áËËé…› ÿ‡ßÍŠ ÿ‚ś͕ ÎÁ Ù‚– àˆ Í˜Á .Export ÿ˜ÏŸß àìÁÍÁ -¸ ÎÁ ‚žœÀ áÍŸ˜Í‚—ƒ ÑßÍ àìÁÍÁ ÿ™ß ¬Ëœ—ÿ› ÿœ‚ƒŸ…Œ„ (HTML ¬PDF ¬Postscript) .ÝŸ‚›œÿ› ÍÁ̘Áß Þ‚˜ËœœÁߊ àƒ ÁÍ à™‰Í› ÞŸÁ .Å‹Á ÇÍ‚Š àß›‡› ÞŸÁ àÎ߉ ÁÍ ØéŸ‚éÕß àŸ™— Ù‚– .Å‹Á ÍÁËÍߊ̓ ÿŸš‚ƒ ÅŸß™ßÁ ÎÁ Þ…› ÅŸÍŸË› àìÁÍÁ -¹ Åé›é‹ ÎÁÍ… ¬Å‹ÁÍ Å›‹ ÎÁÍ… Ü›‚Œ à— Ëß›œ ËÁߊ Á͇Á Þ…› ÍËœÍ ‚ƒ àÔƒÁÍ ÍË .ËŒ‚ƒÿ› Attributed String К— ÿÁ̓ ÿœ‚ƒŸ…Œ„ ß Ü›‚— ÎÁÍ… ¬Äˆ ÔßÔŠ ß àÍŸÁË ¬ÜŸÔ…‹› ÜŸƒ– ÎÁ ÿ—Ÿ•Á͘ àŸ™ßÁ ÿ‚ś͕ ÿœ‚ƒŸ…Œ„ - ±° JPEG ß GIF ÿ—Ÿ•Á͘ ÿ‚ž…›Í• ÖÁßœÁ ÎÁ ÿœ‚ƒŸ…Œ„ -±± ÝéŸÕœ… ÁÍ ÚÍË› ‚Ÿ à‰• ÉÔ‹ ËœœÁß…ÿ› ‚žœŸÁ .header/footer ÿœ‚ƒŸ…Œ„ -±² .ËŸ‚›œ feature ÁÍ Ø™…Š› ÿ‚footer ‚Ÿ header ËœÁß…ÿ› ÜßÁ à‰• ß ËœŸ‚›œ ÑŠƒ ÚŸ ÅŸ–ß› ÞÁß…ÿ› ÿ˜ÏŸß ÞŸÁ ÎÁ àË‚•…‹Á ‚ƒ .Ń‚† ÅŸŽß ÿœ‚ƒŸ…Œ„ -±³ àé— ÝéŸéœé—ÿé› ÓÍ• Ü‚†› ÞÁßœƒ .ËÍ— Ń‚† Òߊƒ ܉› ÚŸ ÍË ÁÍ Ò‚Š ÿŸŒ ‚Ÿ ¬ÿ鎂éŸÍ ł郋‚‰› Ý‚‡œÁ ÿ‚‡ƒ .ËŸË ÍÁÍ– à‰• Ô‹ß ÍË ÁÍ ÿŸŒ ÚŸ ËŸÁߊÿ› .ËéŸéŸ‚é›éœ ޟΘŸ‚‡ CENTER ÍÁË–› ÚŸ ÍË ÁÍ ÿ–•Á ß áËß› ÍÁË–› à— Å‹Ÿ•‚— àé‰é• ËÍß› ÍË Ô–• .ËÁË ËÁߊ şΗ͛ Ëߊ container ÜŠÁË ÍË ÁÍ ÿŸŒ Ù‚– àéƒ ‚éžéœÀ ÞË霂éƒé‹ˆ à™ì‹› ¬Ëœ…‹ ΜŸ…œ‚— ÿ˜› Ä‚ˆ ÿ‚ÿŸŒ à—ŸŸ‚‡œÀ ÎÁ .ËÍŸ˜ÿ› ÅÍß ÅœŸÍ„ ÿŸŒ ÍË Í˜ŸË—Ÿ ß Ö‚é•…ÍÁ àƒ à™—Œ…› ÿ‚ž…›‹– Ö‚•…ÍÁ ß ÓÍ ‚ƒ ˈ ܉› Ë‚ƒÁ ÿœ‚ƒŸ…Œ„ -±´ Î…Ÿœ‚— ÓÍ .ËŸË͘ ËÁߊ Ëßˉ› ¬ÞÀ ÿÁ͇Á ÙŸÍÔ ÎÁ ÜßÁˇ ÿœ‚ƒŸ…Œ„ -±µ .Ëœ…‹ ‚Í…Ÿœ‚— Ä‚ˆ Ù‚– ÍË ÅœŸÍ„ ÿ‚Object àŸ™— àßšƒ Ù‚– · àƒ Î‡ ÿ‹Í̓ ËŸœ— Ã‚Š…œÁ ÁÍ UML ÚŸ àÍ‚›Œ ÝÁ͘‚ŸË Ù‚– ÉÍÔ Í…žƒ ÚÍË Åž‡ ÿéŸéŒ ¬àéÔ–œ ÞŸÍ…š‚ƒ ÎÁ ÖßÍŒ ‚ƒ .ËËÿ› Þ‚Œœ ÁÍ ÿ†ßÍß› ß—Í… ÚŸ ÝÁ͘‚ŸË àé— ÿéŸéŒ Ößéœ Íé Ü雂Œ à— ËŒ‚ƒÿ› PFPage ÿ‚Object Ü›‚Œ à— PFDocument PFPrintObject Íé àé— Ë錂éƒÿé› PFPrintObject ÿŸŒ ÎÁ (instance) ÿÁà™‰ß ÇéŸé˜ Þ‚é…ŸÁ̓ ÉŸŽß… ÞŸÁ ͘Á .ËŒ‚ƒ á͘ŸË ÿ‚PFPrintObject Ü›‚Œ ËœÁß…ÿ› Ä‚éˆ ÃßéˆÍ‚éžéˆ Í‚…Š‚‹ ÎÁ áÍ…žƒ ÿ‚›œ à— ËŸœ— à‡ÁÍ› ± Ü—Œ àƒ Å‹Á àËœœ— ÚéŸ Ð‚é‹Á ̓ ÉÍÔ à— ËŸ›ž• ËŸÁߊ Ü—Œ àƒ ÿ™‚›‡Á à‚˜œ ÚŸ ‚ƒ .Ëœ—ÿ› àìÁÍÁ ÝéÁßéŠ àéìÁÍÁ áÍé…ŒŸƒ Å‚‰ŸŽß… Á˃ ×͛ ÿߘ™Á ËÍß› ÍË .Å‹Á ×͛ ÿߘ™Á .ËÍ— ÿ™— áÍŸ˜ àÎÁËœÁ Ý…‹Ÿ‹ ‚ƒ ‚› .ËËÿ› Þ‚Œœ ÁÍ Ä‚ˆ Ù‚– ÿ‰ÁÍÔ á˃ ÿ‚ž…›‹– .ËÍ— ÝŸÁߊ ÖßÍŒ Univesal Measurement System .Åé‹Á áËÁËÍÁÍé– áÍ韘 àÎÁËœÁ ÿ‚ˉÁß ÎÁ ÿœ‚ƒŸ…Œ„ Ä‚ˆ Ù‚– Ýž› ÿ˜ÏŸß ÚŸ Íé…é›éŸ…œ‚‹ ‚Ÿ ÈœŸÁ ÎÁ Ü‹—Ÿ„ ß ÅœŸß„ ÿ‚‡ƒ ËœË ÿ› ÉŸ‡Í… ÝËÍ› ÎÁ áÍ‚Ÿ‹ƒ àé— ÝÁàËÍé— Ë‚é‡éŸÁ PFUnit ݂霃 ÍŸÌ„ ؂ԜÁ К— ÚŸ Þ› .ËœŸ‚›œ àË‚•…‹Á ÁÍÁË ÁÍ Å霟߄ àƒ áÍŸ˜ àÎÁËœÁ ˉÁß ÚŸ ܟ˃… ÿÁ̓ ÝΚ ÿŸÁË…ƒÁ ÿ‚ÅŸ™ƒ‚– .ËŒ‚ƒÿ› :ÝËßé›éœ Ë‚é‡éŸÁ ÁÍ Ëéœé…‹ PFUnit К— à— àËœË ÜŸ—Œ… К— à‹ ÞŸœˆ› Þ› ‚éƒ ÿ‚éËé‰Áß ËŸœÁß…ÿ› ‚К— ÞŸÁ ‚ƒ .PFPointUnit ¬PFCmUnit ¬PFInchUnit Ë‚é‡éŸÁ ‚éƒ ËŸœÁß…ÿ› ÞŸœˆ› .ËŸœ— Í‚— Ëߊ àÁߊ™Ë ËÍß› áÍŸ˜ àÎÁËœÁ ˉÁß à•‚ŽÁ àß›‡› ÞŸÁ àƒ ÁÍ á͘ŸË áÍŸ˜ àÎÁËœÁ ˉÁß PFUnit К— ÿÁ̓ subclass ÿÁ̓ setUnit() Ë…› ßË ÎÁ ¬ËŸœ—ÿ› àË‚•…‹Á ‚ž‹š— ÞŸÁ ÎÁ à—Ÿ›‚˜œ .ËŸì‚›œ ŋ˃ Åž‡ getPoints() Ë…› ß áÍŸ˜ àÎÁËœÁ ˉÁß ÍË ÍÁË–› ÚŸ ØŸÍ… .ËŸœ— àË‚•…‹Á ÅœŸß„ àƒ àËŒ ܟ˃… ÍÁË–› ÞËÍßÀ ËÍÁË霂é…é‹Á ÖÁßéœÁ ÿ‚é‡éƒ ¬Ý‚é–ÍÁ ÞËÁË Þ‚Œœ ÿÁ̓ ‚ž‹š— ÞŸÁ ÎÁ àË‚•…‹Á Ë‚é‡éŸÁ ÿé…š—Œ› Å‚ƒ‹‚‰› Ý‚‡œÁ Þ‚›Î ÍË ËœÁß…ÿ› integer ß ¬float ¬double ÍË ‚Íß…ÁÍ„Á overloading ÞÁË–• ‚ž‹š— ÎÁ àË‚•…‹Á ÍË Í˜ŸË à…—œ ÚŸ .ËŸ‚›œ К— àƒ ÁÍ ÿŽ‚ŸÍ ÿ™Á Å‚Ÿ™› àŸ™— Þ› Ü—Œ› ÞŸÁ ܉ ÿÁ̓ .ËŒ‚ƒÿ› Áß‚‡ Þ‚ƒÎ Ý‚‡œÁ Þ‚›Î ÍË ‚àËÁË encapsulation ¬ÃŸ…Í… ÞŸÁ àƒ .ÝÁàËß›œ à•‚ŽÁ PFUnit ³ àéƒ È霟Á ² ˟˃ à΂‡Á Ü‚†› ÞÁßœƒ .ËŒ‚ƒÿ› ÍŸÌ„ Þ‚—›Á ÿŽ‚ŸÍ Å‚ƒ‹‚‰› á͘ŸË ÿ‚àÁÍ ÎÁ ÁÍ Í‚— ÞŸÁ ËŸœÁß…ÿ› .ÝŸŸ‚›œ à•‚ŽÁ PFInchUnit Ô‹ß… ÈœŸÁ .ËŸŸ‚›œ ÜŸ›—… Object Oriented ÎÁ ÍŸ’
PFInchUnit inch = new PFInchUnit(3.0);
PFInchUnit inch = new PFInchUnit(3.0); .ÝËß›œ Ë‚‡ŸÁ áÍŸ˜ àÎÁËœÁ Ý…‹Ÿ‹ ÜŸ›—… Åž‡ Ü›—› ÞÁßœƒ ͘ŸË К— à‹ Þ› .Å‹Á y ß x Ô‚–œ ØÍ› à— :PF Point ËË ÿ› Þ‚Œœ ÁÍ Object ÚŸ àÎÁËœÁ à— :PF Size .Å‹Á ÿ™ŸÔ…‹› àŸ‰‚œ ÚŸ ØÍ› à— :PFRectangle .ËœŸ‚›œÿ› àË‚•…‹Á PFUnit К— ÎÁ Ùß• ÿ‚ž‹š— àŸ™— PFDocument К— Ðšé— ÞéŸÁ .ËÍÁË ÍÁÍé– Ä‚éˆ Ãé™‚é– àœ‚Šƒ‚…— Ý…‹Ÿ‹ ÍË ÍË PFDocument К— export ß Ä‚éˆ Å鞇 ÁÍ ÝΚ Å‚Ÿ™› ß Ëœ— ÿ› Ü› à‰• container ÚŸ Ëœœ‚› ÁÍ ÅÁË霅‹› àÍÁËÁ àƒ Ô߃͛ ÿ‚Ë…› ÎÁ ÿŽƒ ÞŸœˆ› К— ÞŸÁ .ËË ÿ› Ý‚‡œÁ .ËŸ‚›œÿ› àìÁÍÁ Οœ àË‚é•é…‹Á ‚ƒ ÁÍ ‚footer ß ‚header ËŸœÁß…ÿ› ÞŸœˆ› ¬PFDocument К— ‚ƒ ËŸœÁß…ÿ› .ËŸŸ‚›œ ÝŸÕœ… ÚÍË› Ü— ÿÁ̓ setFooter() ¬setHeader() ÿ‚Ë…› ÎÁ ÿ‚éËé…é› ÎÁ àË‚é•é…é‹Á ‚éƒ ÜßÁ àé‰é• ÿÁ̓ ÁÍ ÿ…ß‚•…› footer ß header .ËŸŸ‚›œ ÝŸÕœ… setFirstPageFooter() ß setFirstPageHeader() Ëé…é› ÞËÎ ÁË ‚ƒ .ËŒ‚ƒÿ› Print-Preview à͇œ„ ÚŸ Ü›‚Œ ÞŸœˆ› PFDocument ÍË ÜŸŽ•… àƒ Á˃ à— ËŒ ËÁߊ ÍÁËß›œ Print-Preview à͇œ„ PrintPreview() .Å•˜ ÝŸÁߊ ÞŠ‹ àÍ‚ƒ ÞŸÁ ÿ‚éž…›Í• àƒ ÚÍÁË› export Åž‡ ÿ…Ÿ™ƒ‚– àìÁÍÁ PrintFramework ØÁËÁ ÎÁ ÿ—Ÿ àËÎ‚éƒ ÎÁ 𛂗 PrintFramework ÿߘ™Á à—ŸŸ‚‡œÀ ÎÁ .ËŒ‚ƒÿ› à‰• ÿ‚‡ƒ ͘ŸË Åéžé‡ ¬Ëßé›éœ ÅÍßé„‹—Á ÞÁß…ƒ ÁÍ ÿ…›Í• Ößœ Í à— ËÍÁË Ü‚›…‰Á ¬Å‹Á Ü–…‹› ÿ‚éËé…› ÎÁ ÚŸ Í ÎÁ PDF ‚Ÿ HTML ÜŸƒ– ÎÁ ÿŸ‚ž…›Í• àƒ Ëߊ ÚÍÁË› ÅÍß„‹—Á ÞéŸÁ àé— ËéŸéŒ‚éƒ à…ŒÁË à‡ß… .ËŸŸ‚›œ àË‚•…‹Á printHTML() ‚Ÿ printPDF() ‚雌 àƒ ÁÍ ÞÀ ÜŸ›—… Þ› .ËœÁàËŒœ ÜŸ›—… Îßœ ‚›Á Ëߌÿ› Í‚Õ ÉÍÔ ÍË ‚Ë…› .ÝÍ‚„‹ÿ› ÿÁÍéƒ .Ë韂雜ÿ› àìÁÍÁ Ëœ‹ ÿ‚àŠŒ› ÝŸÕœ… Åž‡ ÿ•™…Š› ÿ‚Ë…› PFDocument àé— ËŸŸ‚›œ ÞŸŸ… ÁÍ ÚÍË› ÚŸ Ý‚œ ËŸœÁß…ÿ› setDocumentName() Ý‚œ ‚ƒ Ü‚†› àÍé‡éœé„ .Ë韂é›éœÿé› ÒéŠéŒé› ÞÀ ‚éƒ Ü雂 Ý…‹Ÿ‹ Ä‚ˆ Ø ÍË ÁÍ ‚›Œ ÚÍË› àÍé‡éœé„ Titlebar ÍË ÞÀ ÞËÁË Þ‚Œœ Åž‡ ÚÍË› Ý‚œ ÎÁ ÞŸœˆ› Print-Preview showPageDigital ß showPrintDialog() ÿ‚éËé…é› Ý‚‡œÁÍ‹ .ËŸ‚›œÿ› àË‚•…‹Á Ë…› Ô‹ß… à— page à͇œ„ à— ËŸŒ‚ƒ à…ŒÁË à‡ß… .ËËÿ› Þ‚Œœ ÁÍ àÔ߃͛ à͇œ„ ÎÁ Ðé„ .ËÍÁËéœ Ëßé‡ß Java Print API ÍË ËßéŒÿé› àËÎ ÁË showPrintDialog àé— Ýé…é•‚éŸÍË ß ÝËÁË Ý‚é‡éœÁ ÿŒŸ‚›ÎÀ Ä‚ˆ Ëœˆ Ø™…Š› ÿ‚Ý͕Ś„ ÍË à—œŸÁ ÝËßéŠ àé— Ý…•͘ ÝŸ›… ¬Å‹Á Åß‚•…› ÝÍ• Åš„ Í ÍË Ì’‚— àƒ Ô߃͛ ÿ‚à͇œ„ .Ý‹Ÿßœƒ page à͇œ„ ÚŸ ÿ‚éËé…› ˟˃ à΂‡Á ¬ËŸËŒ ‚œŒÀ PFDocument К— ÿ‚ÅŸ™ƒ‚– ‚ƒ ‚›Œ à— Ü‚‰ .ËŸì‚›œ à‡ß… UML Diagram 2 àƒ .ÝŸŸ‚›œ ÿ‹Í̓ Å‚ŸŸÎ‡ƒ ÁÍ Ä‚ˆ PFDocument print() Ëé…› à—Ÿ›‚˜œ ¬àËŒ àËÁË Þ‚Œœ ÝÁ͘‚ŸË ÞŸÁ ÍË ÍßÔœ‚› Ä‚éˆ Ü› PFDocument .Ëœ…—͉ ÍË à™—Œ…› ÿ‚ž…›‹– ÞŸƒ ‚ž›‚Ÿ„ Ëߌÿ› àËÎ ÁË ÚéŸ ËÍÁß Ëéƒ ß ËŸ‚›œ ÿ› Ë‚‡ŸÁ Book ÿŸŒ ÚŸ ÁË…ƒÁ .Ëœ—ÿ› instantiate ÁÍ àé—éœéŸÁ ÎÁ ˃ .ËœË͘ à•‚ŽÁ Book àƒ document Å‚‰• Ý‚›… ‚… Ëߌÿ› à–™‰ ß ËßéŒÿé› àËÎ ÁËé PrinterJob print() ¬ËéŒ ÜéŸé›é—é… PFDocument àé–陉 .ËÍŸ˜ ÿ› àËžƒ ÁÍ Ä‚ˆ ËœŸÁÍ• àŸ–ƒ JavaPrintAPI ÿé‹Í̓ àƒ ‚‡œŸÁ ÍË .ÅŠÁËÍ„ ÝÁߊ Ä‚ˆ Ù‚– ÍË ÿŸŒ Í Ñ–œ àƒ Ëƒ Å›‹– ÍË .ÝŸÎÁËÍ„ÿ› PFPage К— PFPage К— à— ÿŸ‚ŸŒÁ ÿÁ̓ Container ÚŸ ÞÁßœƒ ß Ë΂‹ÿ› ØŸÍ… ÁÍ ÿÁà‰• PFPage К— ËéÁßéŠ ÁÍ ËßéŠ Åé›Í• Ä‚ˆ Ù‚– ÍË à‰• Í .Ëœ—ÿ› Ü› ˜ߌÿ› ÍËœÍ ÞÀ ÍË àé‰é•é àéƒ Ë韜Áß…ƒ à— ÿŸ‚Object ËÁË… ÿßÍ Íƒ ÿ…ŸËßˉ› àœß˜ˆŸ .ÅŒÁË .ËÍÁËœ Ëß‡ß ËŸœ— à•‚ŽÁ ÎÁ àé—éœéŸÁ ‚éŸ ËéŒ‚éƒ àé…éŒÁË ÁÍ ÑËßéŠ header/footer ËéœÁß…ÿ› à‰• Í Ãé™‚é– àéœß˜ˆ .ËŸ‚›œ àË‚•…‹Á PFDocument К— ÍË àËŒ ØŸÍ… header/footer ÜÍé…霗 à‰• ÁË…ƒÁ ¿ËŸ‚›œ àË‚•…‹Á header/footer ÎÁ à— ËÍŸ˜ÿ› ÝŸ›… Ä‚ˆ àËéŒéœ ØéŸÍé… Í˜Á ¿àœ ‚Ÿ àËŒ ØŸÍ… header/footer ÑËߊ ÿÁ̓ à— ËŸ‚›œÿ› header/footer ͘Á .ËÍßÀ ŋ˃ PFDocument ÿŸŒ ÎÁ ÁÍœÁ à— Ëœ—ÿ› ÿ‹ ¬ËŒ‚ƒ àé‡ßé… .Ëß雜 ËÁߊ àË‚•…‹Á ÚÍË› header/footer ÎÁ à‰• ¬ËŒ‚ƒ àËŒ ØŸÍ… à— getHeader() ß getFooter() :Å‹Á Ë…› ßË ÿÁÍÁË Document à— ËŸŒ‚ƒ à…ŒÁË Íƒ header/footer ÑÎÍÁ .ËÍŸ˜ ÿ› àËžƒ ÁÍ ÉŸ‰ header/footer àìÁÍÁ à•ŸÕß ß Ë錂éƒÿé› ÜßÁ àé‰é• header/footer ÿÁ̓ àËŒ ØŸÍ… (value) ÑÎÍÁ ÿ‚œƒ› .ËŒ‚ƒÿ›œ Ýž› ¬àœ ‚Ÿ Å‹ ÜßÁ à‰• ÿ‹Í̓ ʼn… à‰• à—œŸÁ ß getPrintableAreaOrigin() .ËéŒ‚éƒ ÿé› Ýéžé› Ëé…é› ßË ÿÁÍÁË PFPage К— Üéƒ‚é– àËßË鉛 Å‚šÔÁ getPrintableAreaOrigin() .getPrintableAreaSize() ÿ‚éŽé• ¬ËËÍé˜ÿé› Ò銌› ‚àŸŒ‚‰ Ô‹ß… à— Ì’‚— ÿš‚ƒ Äˆ Å›‹ àŒß˜ Ëœœ‚› Ä‚ˆ header Ö‚é•é…ÍÁ ß ¬Ëéœé—ÿ› àË‚•…‹Á Ì’‚— ŗ͉ ÿÁ̓ ÞÀ ÎÁ ͘Ăˆ à— áÍ‚œ— Î‚éƒ ÁÍ Ä‚ˆ ܃‚– ܉› àÎÁËœÁ ß Ë‚ƒÁ ͘ŸË ÅÍ‚ƒƒ ß .Ëœ—ÿ› àìÁÍÁ ÁÍ Ì’‚— .ËŒ‚ƒÿ› Ä‚ˆ ܃‚– ÿ‚Ž• ß Ä‚ˆ ܃‚– ܉› Á˃› àËœË Þ‚Œœ ² Ü—Œ .ËœÁË͘ ÿ› ÉŸŽß… ± ÑŠƒ ÍË à— ËŸ‚›œ Á͇Á ÁÍ Ä‚ˆ ܃‚– П•Í…œŸÁ ËŸ‚ƒ PFPage ¬Ä‚ˆ Åž‡ .ËŒ àËÁË .ËŸË͘ ‚œŒÀ Ä‚ˆ ÿ‚ÿŸŒ àÍÁËÁ à߉œ ‚ƒ à— ËŸÍÁË ÁÍ ÞÀ ÿ˜Ë‚›À ÚœŸÁ PFPrintObject ÚÍË à— Ý…•͘ ÝŸ›… Þ› .ËÍŸ˜ÿ› ÅÍß ‚ߘ™Á ß—Í… Ђ‹Á ̓ Ä‚ˆ ÿŸŒ áÍ‚›› ÉÍÔ :ÝŸ‚›œ àË‚•…‹Á ÜŸÌ ÿ‚ž…›‹– łՉš› ÎÁ ˃ ߘ™Á ÞÀ ÎÁ à雂éœÍéƒ ÚŸ ‚ƒ ÜŸÔ…‹› ÚŸ Þ‚Ÿ› ÍË ÁÍ àÍŸÁË ÚŸ ËŸÁߊ ÿ› à— ÝŸœ— ÿ› ÓÍ• àËÍé— Ý‚é’ËÁ ͘ŸË—Ÿ ‚ƒ ÁÍ Object ßË à— ËŸÍŸ˜ ÿ› ÝŸ›… ÿž…œ› .ËŸŒ—ƒ Ý‹Í ‚Ÿ ¬ÿ„— ¬‚‡ƒ‚‡ ÁÍ ‚žœÀ ÞÁß…ƒ ͅʼnÁÍ ‚… ËŸœ— ܟ˃… ÿŸŒ ÚŸ àƒ ‚… (group) ÃßéŠ à雂éœÍéƒ ÚéŸ àéœß˜ˆ ‚›Á .ËŸË ÍŸŸ“… ÁÍ ‚žœÀ àÎÁËœÁ ‚Ÿ ß àËÍ— ØÌ‰ ¿ËË Ý‚‡œÁ ÁÍ áÍ‚— ÞŸœˆ ËœÁß… ÿ› Object Oriented Åé‹Á àéŸé™ßÁ ÚéŸé•Á͘ à— ÁÍ Í˜ŸË Object ÚŸ ß Container ÿŸŒ ÚŸ ËŸœÁß…ÿ› ß ËÍÁÌé˜éƒ ÙÍ• ÁÍ ÒŠŒ› Object ßË ÞŸÁ ÞŸƒ ËŸ‚ƒ ‚›Œ à›‚œÍƒ .ËŸŸ‚›œ Ë‚‡ŸÁ ß ÝËÁË Ý‚é‡éœÁ ÁÍ Í‚— ÞŸÁ šƒ– .Ëœ— ËÍߊ̓ ‚žœÀ ‚ƒ ÚŸ Í ÿ‚ÿ˜ÏŸß Ùƒ‚Ô› .Ëß›œ ØÍÔ̓ ÁÍ Åš‚—ŒÁ ËŒÿ› ÿ…Š‹ àƒ à— Ë߃ Û‚ƒ ÎÁ Í„ ÿÁà›‚œÍƒ Ü‚‰ ßé˜é™Á ÞéŸÁ .Ë韜— àË‚•…‹Á ÿƒŸ—Í… ÿߘ™Á ÚŸ ÎÁ à— Ýœ— ÿ› Ë‚žœŒŸ„ Óß ÍË ÿ‚éÿéŸéŒ ÎÁ ÝÁËé— Í ÁÍŸÎ Ë΂‹ÿ› Þ‚‹À áÍŸß… ÿ‚ÿŸŒ àŸ™— àƒ ÁÍ ÿ‹Í…‹Ë ÿéŸéŒ ÚéŸ ÞéŸéƒ ÿé–Íé• ÈéŸé ß Ëœœ—ÿ› Ü› Container ÚŸ ÞÁßœƒ ÿ—Ÿ•Á͘ Ý‚‡œÁ ÁÍ ØŸ‚Õß ÿ›‚›… ‚ÿŸŒ Þ‚› .ËÍÁËœ Ëß‡ß ÿ—Ÿ•Á͘ ÿŸŒ ÚŸ ß Container .Ëß›œ ËÁߊ ËŸ™ß… ÁÍ ‚ÿŸŒ ÎÁ ÿÁàŠ‚Œ àß›‡› ÚŸ ÿƒŸ—Í… Í‚…Š‚‹ .ËËÿ› .ËŒ‚ƒÿ› ×͛ ÿߘ™Á ËÍ—Í‚— àËœË Þ‚Œœ ³ Ü—Œ
Å‚ƒ‹‚‰› ß ËŸŸ‚›œ ÝŸ‹Í… Å‹Ë ‚ƒ ÁÍ áΟˆ Í ËŸœÁß…ÿ› ‚›Œ header ÅŠ‚‹ ÿÁ̓ ÎÁ ËéŸéœÁßé…ÿ› à—œŸÁ ‚Ÿ ß .ËŸË Ý‚‡œÁ ÁÍ Å›‹– Í Ü‰› ÞŸŸ… ÿÁ̓ ÁÍ ÝΚ .ËŸŸ‚›œ àË‚•…‹Á PFPrintObject ÍœŸ…œ‚— ÿ˜ÏŸß .ËÍÁË Íƒ ÍË ÁÍ ÎŸˆ à› ÿ™Á ÿŸŒ à— ËŸœŸƒÿ› à‰• Header Í‚…Š‚‹ ÿ‹Í̓ ‚ƒ ÅÍ‚éƒé ØÁÍé˜ÁÍ‚é„ ÿŸŒ ÞŸ™ßÁ .˜ߌÿ› à•‚ŽÁ ÿ™Á ÿŸŒ àƒ ØÁ͘ÁÍ‚„ ÿŸŒ ßË :Å‹Á ‚ÿ˜ÏŸß ÞŸÁ Ü›‚Œ à— Ëß›œ ËÁߊ Ä‚ˆ ÁÍ "Printing In Java" horizontalSticky = LEFT ß verticalSticky = CENTER verticalSticky=CENTER ÿ‚ÿ˜ÏŸß ‚ƒ Page nn ÅÍ‚ƒ Ü›‚Œ ÝßË ØÁ͘ÁÍ‚„ ÿŸŒ ÿ‚ÿ˜ÏŸß ‚ƒ ÔŠ ÿ韌 ÚŸ ‚› Ý‚‡œÁÍ‹ .ËŒ‚ƒÿ› horizontalSticky=RIGHT ß ß horizontalSticky=CENTER ß verticalSticky=BOTTOM àŸŒ‚‰ ÚŸ à— ËŸœ—œ Ñß›ÁÍ• .ÝéŸéŸ‚雜ÿ› à•‚ŽÁ horizontalFill=TRUE Ô‹ß ÍË ÎŸˆ à› ËŸŒ‚ƒ Þì›Ô› à— Ë韟‚›œ ÝŸÕœ… ÿ™Á à™—Œ…› ÿ‚ž…›‹– ØÁÍÔÁ ÍË ÁÍ .ŕ͘ ËœÁߊ ÍÁÍ– ‚‡— ÚŸ Í ËŸœŸƒƒ ‚… ËŸœ— à‡ÁÍ› µ Ü—Œ .˜͟˜ÿ› ÍÁÍ– header .Ëœ—ÿ› ØÍÔ̓ ÁÍ Åš—Œ› ÎÁ áÍ‚Ÿ‹ƒ ÿŸŒ ÅŸ–ß› ÞËÍ— Ń‚† ÅŸ™ƒ‚– ÎÁ àË‚•…‹Á ß àË߃ ˡ› àË‚•…‹Á ܃‚– Ë ÍË Ë ¬ÝŸËÍ— Ë‚‡ŸÁ Ü‚†› ÞŸÁ ÍË à— ÿÁà›‚œÍƒ ËÍéŸé˜ƒ ÝŸ›… ̓͂— ͘Á .Ë΂‹ÿ› ÙƒÔœ› ÿ…Ÿ–ß› Í ‚ƒ ÁÍ Ëߊ Í‚—Ëߊ ÍßÔƒ Û霂› ˟ˇ ÅŸŽß ‚ƒ ÁÍ Ëߊ Í‚—Ëߊ ÍßÔƒ à›‚œÍƒ ¬ËË ÍŸŸ“… ÁÍ à‰• Åž‡ .Å‹Ÿœ ÝΚ ÿ•‚ŽÁ à›‚œÍƒ ÈŸ ß àËÍ— (Sticky Positioning) áÍŸ˜ÍÁÍ– ܉› ÞËÍ— Ń‚† (Sticky) ÞËÍ— Ń‚† àÏÁß ÎÁ Þ› Á͈ à— ËŸœ—ÿ› Ã釅 š‚›…‰Á ‚‚›Œ ÎÁ ÿ™ŸŠ Í‚— ÚŸ•Á͘ Í‚…‹ÁÍŸß ÚŸ ÞÁßœƒ à—Ÿœ‚›Î ÍË ÁÍ àÏÁß ÞéŸÁ .ÝŸ‚›œÿ› àË‚•…‹Á ÍÁÍ– ̓͂— Í‚Ÿ…ŠÁ ÍË ß Ë‚‡ŸÁ ÁÍ ÿ…Ÿ™ƒ‚– ÝË߃ Í߃‡› .ÝËß›œ ÖÁ˃Á ÝËÍ—ÿ› Ĉ ‚Ÿ Å‹ÁÍ ¬Ô‹ß ¬ÞŸŸ‚„ ¬š‚ƒ ܆› ͘ŸË Å›‹– àƒ ÁÍ Å雋– ÚŸ ËœÁß…ƒ à— ÝË .ËË ÍÁÍ– Ń‚† ÅŸ–ß› ÚŸ ÍË ß àËœ‚ƒ‹ˆ àËŒ áÍŸ˜àÎÁËœÁ ÿƒ‹œ ÅŸ–ß› ÚŸ ÍË àÍ‚ƒßË ËŸ‚ƒ ¬Ëƒ‚Ÿ ÍŸŸ“… ÞÀ àÎÁËœÁ ‚Ÿ ¬Ëƒ‚Ÿ ÍŸŸ“… Å›‹– ÞÀ ÿƒ‹œ ÅŸ–ß› ͘Á Å郂† àÏÁß Þé› ÜéŸ™Ë ÞŸ› àƒ .Ëߌ àËœ‚ƒ‹ˆ ß à…•Í˜ÍÁÍé– Üé‰é› Þ‚é›é ÍË àË‚é•é…‹Á ÞÀ ÎÁ à陂閛 ÿ‚éžé…œÁ ‚… ß ÝËß›œ Ã‚Š…œÁ ÁÍ sticky ‚éŸ ÞËÍé— .ÝŸ‚›œÿ› ÎÁ Ò‚éŠ Þ‚é—› ÚŸ ÍË ÁÍ Å›‹– ÚŸ ÞËÁË ÍÁÍ– ¬ÿÍŸ˜ÍÁÍ– ܉› ÞËÍ— Ń‚† ÿ˜ÏŸß Ñ銃 ÚŸ ËŸœÁß…ÿ› "ÿÍŸ˜ÍÁÍ– ܉› ÞËÍ— Ń‚† " ÿ‚Ë…› ‚ƒ .Ë΂‹ÿ› Þ‚‹À à‰• Í߉› ÍË ß ¬ÞŸŸ‚„ ¬Ô‹ß ¬š‚ƒ ¬áËß› Í߉› ÍË :ËŸË ÍÁÍ– ÍŸÎ ÿ‚žœ‚—› ÍË ÁÍ .ËËÿ› Þ‚Œœ ÁÍ Å‚œ‚—›Á ÞŸÁ Ý‚›… ¶ Ü—Œ .Å‹ÁÍ ß Ô‹ß ¬Äˆ ÿ–•Á ÞéŸéŸé… ÁÍ áÍŸ˜ ÍÁÍ– ÅŸŽß ÍÁË–› à— ËœËÿ› ÁÍ Þ‚—›Á ÞŸÁ ‚›Œ àƒ Ë…› ßË .setHorizontalSticky() ß setVerticalSticky() :ËŸœ— àÎÁËœÁ ÓÍ ËŸœÁß…ÿ› ÿ˜ÏŸß ÞŸÁ à™Ÿ‹ßƒ .Å‹Á àÎÁËœÁ ÍË ÍŸŸ’… ͘ŸË ËŸ–› Ë̓͂— ÚŸ ËéœÁßé…ÿ› ÿ™ƒ– ÑŠƒ .ËŸœ— ÞŸŸ… ÁÍ ÿ™ƒ– ÑŠƒ àƒ Åƒ‹œ ÁÍ ÑŠƒ ÚŸ Ö‚•…ÍÁ ‚Ÿ .Å‹Á ͘ŸË ÿŒŠƒ àƒ Ù™…› Ëߊ à— ÿŒŠƒ ‚Ÿ ß ËŒ‚ƒ à‰• ÚŸ Ëߊ ß setHorizontalFill(boolean) :ËéœéË ÿé› Ý‚é‡œÁ ÁÍ àÎÁËœÁ ÞŸŸ… Ë…› ßË setVerticalFill(boolearn) ‚àŸŒ‚‰ àéŸéŒ‚‰ ËœÁß…ÿ› Ý PFPrintObject ¬ËœŒ‚ƒ à…ŒÁË àŸŒ‚‰ ËœœÁß…ÿ› Å‚‰• ͘Á ÿé‡ßÍéŠ ß àËßéƒ ËŸ•› ËœÁß…ÿ› à™—Œ…› Å›‹– ÚŸ ÍË àŸŒ‚‰ ÝŸÕœ… .ËŒ‚ƒ à…ŒÁË ÎÁ ß àËÍé— ÝŸÕœ… Ü–…‹› ÍßÔƒ ÁÍ ‚àŸŒ‚‰ ËŸœÁß…ÿ› .ËŒŠƒ Ë߃žƒ ÁÍ àËŒ Ä‚ˆ .ËŸŸ‚›œ ØŸÍ… ÿ™• áÍŸ˜ àÎÁËœÁ Ý…‹Ÿ‹ Ëé…é› ¿ËéŸéŸ‚é›éœÿé› ÝéŸéÕéœé… ÁÍ ÑéŠéƒ ÚéŸ àŸŒ‚‰ ÿ‚àŠŒ› ÿ›‚›… àœß˜ˆ ÿ‹Í̓ Ý‚˜œ š‚›…‰Á .ËÍŸ˜ÿ› àËžƒ ÁÍ ‚Í‚— à› computePositionAndSize() Ðšé— Ôé–é• ß Åé‹Á private Ëé…é› ÞéŸÁ àé— ËéŸÁàËéŒ àé‡ß…› UML Diagram 1 ÍÁÍé– ÅŸ–ß› computePositionAndSize() .ËÍÁË ÿ‹Í…‹Ë ÞÀ àƒ PFPrintObject Ë…› ¬Å•ÍŸÌ„ Þ‚Ÿ‚„ àƒ‹‚‰› ÿ…–ß .Ëœ—ÿ› àƒ‹‚‰› ÁÍ filling ß ‚àŸŒ‚‰ ¬ÿÍŸ˜ ÞÀ ÍË ËéŸéœÁß…ÿ› à— ÁÍ ÿÁàËßˉ› Ö‚•…ÍÁ ß ‚œž„ ¬Äˆ Å›‹ ß š‚ƒ àŒß˜ ÍÁË–› ÍÁÍé– àËßˉ› ÞŸÁ ÎÁ ÇÍ‚Š à— áΟˆ Í .ËœÁË͘ÿ› ΂ƒ ÁÍ ËŸœ— ÝŸ‹Í… àËßˉ› .Ëߌÿ› ØÌ‰ ¬ËÍŸ˜ .ÝŸœ—•Áÿ› áÍÕœ computePositionAndSize() Ë…› àƒ Ü‚‰ ÍË‚› ÿŸŒ .ËœÁË͘ ÿ›Íƒ ÁÍ ÝŸ‹Í… ÿ–Áß àÎÁËœÁ ß ÖßÍŒ Á˃› ÍË‚› ÿŸŒ ÁË…ƒÁ Íé˜ŸË ÿŸŒ ÚŸ ‚Ÿ ¬Å‹Á àËŒ à•‚ŽÁ ÞÀ àƒ PFPage ÿŸŒ à— ËŒ‚ƒ ÿÁà‰• ËœÁß…ÿ› àéƒé‹‚‰› ÁÍ sticky sizing ß ËŸŸ‚›œ ÝŸÕœ… ÁÍ ‚àŸŒ‚‰ ˃ .PFPrintObject ‚éƒ .ËéŸéŸ‚›œ ÒŠŒ› ß ÞŸŸ… ÁÍ áÍŸ˜ÍÁÍ– ÅŸ–ß› ÿ‚àŠŒ› Ý‚‡œÁÍ‹ .ËŸŸ‚›œ à霂é˜Áˇ Å‚ŸßŠ ÜŠÁË… ÍË Ë߇ߛ Åš—Œ› Ý‚›… ¬ÅÍß ÞŸÁ àƒ Å‚ƒ‹‚‰› Ý‚‡œÁ ÎÁ ÇÍ‚éŠ ÍË ÿéŸéŒ ÚéŸ Ý韋ͅ à—œŸÁ ÎÁ áÍŸ˜ß™‡ ÿÁ̓ .ËŸÁàËÍ— ܉ ÁÍ ‚ŸŒÁ ÿ‚éÿéŸéŒ .ËËÍé˜ÿ› àË‚•…‹Á Clipp ÿÁ̓ Graphics2D ÎÁ ¬ËÍŸ˜œ ÅÍß àËßˉ› ÿÁÍéƒ .ËéœéŸ‚é›éœÿ› àÍŸŠÌ ÁÍ Å‚ƒ‹‚‰› ÇŸ‚…œ drawingSize ß drawingOrigin :ËéŸéŸ‚é›éœ àË‚é•é…é‹Á ÜéŸÌ Ëé…é› ßË ÎÁ ¬ÍéŸË‚é–é› ÞéŸÁ àéƒ ÿ郂éŸé…‹Ë .getDrawingSize() ß GetDrawingOrigin() rotate(double) Ë…› .ËœÁË͘ ÞÁß…ÿ› ÁÍ Å›‹– Í Ø™…Š› ÿ‚ àß™‡ Ë‚‡ŸÁ ÿÁ̓ àé‡ÍË Ãé‹é‰ Íéƒ ‚ŸÁßÎ Ý‚›… .Ëœ—ÿ› à•‚ŽÁ ÁÍ ÅŸ™ƒ‚– ÞŸÁ PFPrintObject ÍË .ËœË͘ÿ› àƒ‹‚‰› ØÁ͘ÁÍ‚„ ÞéŸÁ PFParagraph ß ËÍÁË Ã陂– ÍË áÍ‚Ÿ‹ƒ ÅŸ›Á ÞŸÍ…›ž› Þ…› ÿÁÍ‚— ÅŸÍŸË› String ÿéŸéŒ ÚéŸ :ËÍéŸÌ„ÿ› ÁÍ áËßÍß Ößœ ßË ÿŸŒ .ËÍŸ˜ ÿ› àËžƒ ÁÍ à•ŸÕß ÝßË Åé›é‹– ÍË AtributedString ÿŸŒ .AttributedString ÿŸŒ ÚŸ ß ËÍÁËœ‚…‹Á àé— Åé‹Á ÿœ…› ÞËÍ— à•‚ŽÁ àÁÍ ‚žœ… ÍŽ‚‰ Ü‚‰ ÍË ß ËŸË͘ ÉŸÍŒ… àß›‡› ÞŸÁ àéˆ HTML ß RTF ‚éŸ XML Ë韜— ÜÁß‹ Å‹Á Þ—›› ‚›Œ ÎÁ ÿŽƒ .àËŒ ś͕ Áˡ› Åé›Í• ÿœ‚ƒŸ…Œ„ ÿœ‚‹À àƒ ËŸœÁß…ÿ› .ÝÍ‚„‹ÿ› ‚›Œ àËž àƒ ÁÍ Í‚— ÞŸÁ ¿ËœËŒ ÍË .ËéœÍÁË ÿ•‚ŽÁ Í‚— àƒ Î‚Ÿœ ͘ŸË ś͕ ßË à—Ÿ™‚‰ ÍË ¬ËŸœ— à•‚ŽÁ ÁÍ XML ‚é›éŒ áÍßé• ÿ‚΂Ÿœ ‘•Í Åž‡ ÁÍ ÝΚ ß ÿ•‚— ÿ‚ ÅŸ™ƒ‚– Ã߈͂ˆ ÞŸÁ Ü‚‰ Í .ËÍÁË ÿ霂éƒéŸ…Œ„ ÁÍ Ü›‚— ÎÁÍ… Οœ ß ¬Äˆ ß Ô‹ß ¬Å‹ÁÍ Å›‹ ÎÁÍ… ÎÁ PFParagraph ÍË Íé˜Á ‚é›Á ¬Ë韟‚›œ ØŸÍ… Þ…› ÿÁ̓ ÁÍ ÓÍ• ÑŸ„ ÛœÍ ÚŸ ËŸœÁß…ÿ› .Ëœ—ÿ› .ËË͘ÿ› ޟΘŸ‚‡ ¬ËŒ‚ƒ àËŒ ØŸÍ… Þ…› ÿÁ̓ ÿ˜œÍ AtributedString ËéŸéœÁß…ÿ› ÁÍ àÔ߃͛ ÿ‚Ë— .Ëœœ— ÿ› àÍÁËÁ ÁÍ Þ…› ÎÁÍ… private Ë…› Í‚žˆ .ËŸì‚›œ àÕ‰š› ÝßË Å›‹– ÿ‚ž™‚†› ÍË ÿŸÁË…ƒÁ Å‚›Ÿ‹Í… ß .àÍéŸÁË ¬ÜŸÔ…‹› ¬ÔŠ :Ë߃ ËÁߊœ Ü›‚— ÿ—Ÿ•Á͘ àŸ™ßÁ Å‚œ‚—›Á Þß˃ Ù‚– ÍË ÝéŸé‹Íé… Ëé…› ÚŸ ÎÁ ÿŸŒ Í .ËœËÿ› Ô‹ƒ PFPrintObject ÿŸŒ ‚žœŸÁ àŸ™— ÿ‚éàŠŒ› ÝŸÕœ… Åž‡ ÿ•™…Š› ÿ‚Ë…› .ËŸ‚›œÿ› àË‚•…‹Á ÍËœÍ Åž‡ Graphics2D .Ëœ…‹ ÿ‹Í…‹Ë ܃‚– ÛœÍ ß ÔŠ ÛœÍ ¬ÿŽÍ ÔßÔŠ à™›‡œ› Ø™…Š› ÍŸß‚… ËéŸéœÁß…ÿ› à…ƒ™Á .ËŸ‚›œ ÿ› ÿœ‚ƒŸ…Œ„ GIF ß JPEG ÿ‚ ÜŸ‚• ÎÁ PFImage ÿŸŒ Ýé…éŒÁËž˜œ àË‚‹ ÁÍ PFImage Þ› .ËŸŸ‚›œ à•‚ŽÁ Οœ á͘ŸË ÿ‚ž…›Í• ÿœ‚‹À àƒ ÞÀ ÍË ÁÍ àé…é•ÍéŒéŸ„ áÍŸß… ÿ‚ÑÎÁËÍ„ ÿÁ̓ Ü›‚— áÍŸÌ„ ؂ԜÁ à—Ÿ™‚‰ ÍË ¬ÿŸŒ ÚŸ ÍË Java 2D API ÿ‚ž…Ÿ™ƒ‚– àŸ™— ÞËÁË ÍÁÍ– ÍË ÿ‹ ÿ‚‡ƒ .ÝËÁË ÍÁÍ– àéƒ Ô߃͛ Üì‚‹› ß ÝËÁË ÍÁÍ– ÞÀ ÍË ÁÍ Ä‚ˆ Ù‚– ÿÁ̓ ΂Ÿœ ËÍß› ÿ‚ž…Ÿ™ƒ‚– Åé‹Ëéƒ ÿÁÍéƒ ÁÍ Ë…› ÚŸ .Ýœ—ÿ› ÍÁ̘Áß ‚›Œ àƒ ß àËÍ— ‚Í ÁÍ ÍŸß… ÑÎÁËÍ„ ÚéŸ àƒ à—Ÿ›‚˜œ .ÝÁàËß›œ à•‚ŽÁ Οœ àËŒ Í•‚ƒ áÍŸß… ÿŸŒ ÎÁ ÿ„— ÚŸ ÞËÍßÀ ÁÍ áÍéŸßé… ÿ‚ÑÎÁËÍ„ àŸ™— ËŸœÁß…ÿ› ¬ËŸËß›œ ÁËŸ„ ÿ‹Í…‹Ë àËŒ Í•‚ƒ ÍŸß… Ëé…é› ÎÁ àË‚é•é…é‹Á ‚éƒ ÁÍ ÍéŸßéé… ÚéŸ .ËéŸéŸ‚é›éœ ÜŸ›—… ¬ËŸÁߊÿ› à— Í郅› URL ÚŸ ËŸ‚ƒ String Í…›ÁÍ‚„ .ËŸŸ‚›œ load àÕ•‚‰ ÍË setURL(String) .ËŒ‚ƒ ÜßÁˇ àé—éŸé›‚é˜éœ .Ë߃ ËÁߊœ Ü›‚— ¬Üߡ ÿœ‚ƒŸ…Œ„ Ëß‡ß ÝË ÅÍß ÍË ‚› Ù‚– .ËœŸÀÿ› Ú›— àƒ ‚ž‰ÍÔ ÞËÍ— ÝÕœ› ÿÁ̓ šß›› ¬ËœßŒÿ› Ë‚‡ŸÁ àËŸˆŸ„ ÿ‚Ù‚– à韙— ÁË…ƒÁ ÎÁ ÞŸÁ̓‚œƒ ¬Å‹Á Üߡ ÍË Üß™‹ ÚŸ ͘œ‚Ÿ‚›œ PFPrintObject Í àË̓ Í‚—ƒ Ã߈ Í‚žˆ ß Ã™‚– ÍË à— ÿŸ‚Ë…› .ËŸ…‹ ÁÍÁË ÁÍ ‚ž‹š— ÿ‚ž…Ÿ™ƒ‚– .Ëœœ—ÿ› Ü›‚— ÁÍ Üߡ ÿ‚žœß…‹ ß ÍÔ‹ à— Ëœ…‹ ÿŸ‚àŠŒ› ͘œ‚Ÿ‚›œ ˜ߌÿ› ÎÁ ÜßËé‡ Ðšé— ¬Å‹Šœ .ËŒ‚ƒÿ› Οœ ÿŸ‚ž…ŸËßˉ› ÿÁÍÁË Ã™‚– Üߡ Å‚ŠŒ› ‚›Á ÿ‚éŽé• Þ‚é›Î ÚéŸ ÍË ËœÁß…ÿ›œ Üß™‹ ÚŸ .Ëœ— ÿœ‚ƒŸ…Œ„ ËœÁß…ÿ›œ Þß…‹ ÅŸŽß ÁÍ Üߡ Å‚šÔÁ ËœÁß…ÿ›œ Ä‚ˆ Ù‚– ¬ÝßË .ËŸ‚›œ Ü‚“ŒÁ ÁÍ Üß™‹ ÚŸ ÎÁ Í…ŒŸƒ ÜéŸé›é—é… à›‚œÍƒ ÍÔ‹ Ëœˆ ‚ƒ ÁÍ ØŸËÍ ÚŸ Í‚ƒ Í à— Å‹Á ÝΚ .ËŸ‚›œ import .ËŸì‚›œ Visual Å‚–‰™› Ä‚ˆ PFVisualObject .Åé‹Á ËŸ•› à‰• ÿßÍ à™—Œ…› ÿ‚ž…›‹– ÞËÍ— ÍËœÍ Å‚–ßÁ ÿŽƒ àé— ÁÍ áÍééƒ àé™é—éŒé…› ÿ‚ž…›‹– .setComponent() :Å‹Á Ë…› ÚŸ ÿÁÍÁË Ô–• ÁÍ á̓ à™—Œ…› ÿ‚ž…›‹– Ä‚ˆ Ë…› .ËŸœ— ËÍÁß Ë…› ÞŸÁ àƒ ËŸœ— Ä‚ˆ ËŸÁߊÿ› Ëé…é› Ëéƒ ß ÞŸŸ… PFVisualComponent Ђ‹Á ̓ ÁÍœÀ ÅŸ–ß› ß áÍŸ˜ àÎÁËœÁ .ËœÎÿ› ÁË Graphics2D ÿŸŒ ‚ƒ ÁÍ paint .ËéŸÍ‚é„é‹éƒ ÍÔ‚Šƒ á̓ à™—Œ…› ÿ‚ž…›‹– Ä‚ˆ Þ‚›Î ÍË ÁÍ Ýž› Ü›‚ ÚŸ ËŸ‚ƒ ÿ› Ë‚‡ŸÁ ÁÍ Ëߊ Visual ÿŸŒ à— ÿ™‰› ¬ËŒ àËÁË ÉÍŒ ÜßÁ Å›‹– ÍË à—ŸÍßÔœ‚› àé—韛‚˜œ .ËÍÁË ÍŸ†‚… Ëߌÿ› ÙšÔÁ ÞÀ àƒ à— Graphics ÿŸŒ Å–Ë Íƒ ¬ËŸŸ‚›œ ÞÀ àéƒ Í‚é—ËßéŠ ÍßéÔƒ AffineTransform ÚŸ ¬ËË͘ÿ› Ë‚‡ŸÁ Graphics ÿŸŒ ÚŸ ÐéŸÁßéŸË ÿ‚Ž• àƒ ÁÍ ÍƒÍ‚— Ü‚“ŒÁ ËÍß› ÿ‚Ž• AffineTransform .ËÍŸ˜ÿ› Ù™… Frame ÚŸ ÜŠÁË ÍË ÁÍ Ëߊ à™—Œ…› ÿ‚ž…›‹– ‚›Œ àˆœ‚œˆ Ü‚†› ÿÁ̓ .Ëœ—ÿ› map ÞéŸÁ ÍË .Ëéœé—ÿé› map ÐéŸÁßŸË ÿ‚Ž• ÍË ÁÍ AffineTransform ¬ËŸŸ‚›œ Ë‚‡ŸÁ Åé–Ë Þ‚é›é ‚éƒ ‚›Œ Å‚–‰™› à‡Ÿ…œ ÍË .ËÍÁË áÍ…›— Å–Ë à— screen ÚŸ ¬Ü‚†› ËéŸ‚éƒ ¬ËéŸéœé— àË‚•…‹Á Å‚–Ë Í†—Áˉ ÎÁ ËŸÁߊÿ› ͘Á .Ëߌ ÿ› Ä‚ˆ screen ÿ—Ÿ•Á͘ context ÎÁ ÞßÍŸƒ ÍË ÁÍ Þ‚…ÍÕœ ËÍß› Å‚–‰™› à— ËŸŒ‚ƒ à…ŒÁË ÍÔ‚Šƒ .ËŸœ— Ë‚‡ŸÁ Ä‚ˆ ÍßÍ› Þ‚éŒéœ ÁÍ àé‰é• ÚŸ Ô–• Þ‚›Î Í ÍË ¬ËŒ ÉÍÔ› ‚‡œŸÁ ÍË à— Ä‚ˆ ÍßÍ› ÿ˜ÏŸß Ëé‰ ‚é… ÁÍéœÀ àÎÁËœÁ ËŸ‚ƒ ¬Íß…Ÿœß› ÿßÍ à‰• ÚŸ ÞËÁË Þ‚Œœ ÍßÕœ›ƒ .ËËÿ› Ýéžé› ͂韋ƒ ÍŸß… ÞËÍ— ڈߗ ‚Ÿ ÛÍ΃ Ń‹œ Õ•‰ .ËŸË ÍŸŸ“… Íß…Ÿœß› à‰• °/·· ‚éƒ ÍéƒÁÍéƒ ÈéœéŸÁ ±± ÍË ¸/µ ËÁÖƒÁ ÍË à‰• ÚŸ Ń‹œ Ü‚†› ÿÁ̓ .Å‹Á °/·· ËéŸ‚éƒ Ýé ÿÁ àé‰é• ÞŸœˆ ÑŸ‚›œ à͇œ„ Ö‚•…ÍÁ àƒ ‚œž„ Ń‹œ .ËŒ‚ƒÿ› .ËŒ‚ƒ ÞŸ› ÎÁ ÝŸœÁß…ÿ› ¬ËŸ‚›œÿ› ÍËœÍ ÁÍ Graphics2D ÿŸŒ ÚŸ Ä‚ˆ Ù‚– à—‚‡œÀ ÎÁ àËéŸéŒ— ÍŸß… ËŸœÁß…ÿ› .ÝŸœ— àË‚•…‹Á Ý Íß…Ÿœß› à‰• ÿßÍ ÝŸ‹Í… Åž‡ ÿŸŒ ÍéŸéŸé’… Preview àÍé‡éœ„ ÍË Íß…Ÿœß› à‰• ‚ƒ ÞË߃ Ë‚œ…› Åž‡ ÁÍ Ëߊ àËŒ Í‚—ƒ Graphics2D ̓ ÁÍ AffineTransform ¬Í‚— ÞŸÁ Ý‚‡œÁ ÿÁ̓ .ËŸË àÎÁËœÁ .˟̓ƒ ¬àé‰é• ÞŸÍŠÀ ‚… ÜßÁ à‰• ÎÁ ËœÁß…ÿ› ̓͂— Preview à͇œ„ ÎÁ àË‚•…‹Á ‚ƒ àßšé .Ëœ— ڈߗ ‚Ÿ ÛÍ΃ ÁÍ ÍŸß… ËœÁß…ÿ› ß Ëœ— ÍßÍ› ÿ™ƒ– ‚Ÿ á˃ Å‚‰• .ËŒ‚ƒÿ› Ä‚ˆ ÿÁ̓ áËŸ™— ÿÁÍÁË à͇œ„ ÞŸÁ ¬ÞÀ ̓ PFPrintPreviewToobar ÞÀ Þ韙ßÁ à— ËË͘ÿ› ÜŸ—Œ… ÿŸŒ ßË ÎÁ Preview à͇œ„ àéƒ ÁÍ ÍéƒÍ‚é— ÞéŸé›ÁÍé• ß Å‚é—Íé‰ ß Ë‚é‡éŸÁ ÁÍ toolbar ÿéŸéŒ ÞŸÁ .Å‹Á Íßé…éŸéœßé› ÿßÍ ÁÍ à‰• ‚… Ë…‹Í•ÿ› ¬ËŒ‚ƒÿ› ÿŸŒ ÞŸ›ßË à— PFPrintPreview Ëéœéœé— ÿé› Í‚é— Ýé ‚éƒ àéœß阈 ÿŸŒ ßË ÞŸÁ ÝœŸƒƒ à—œŸÁ ÿÁ̓ .Ëœ— ÍËœÍ .ËŸœŸƒƒ ÁÍ UML Diagram 3 Print Job à͇œ„ àƒ ËÍ—Í‚— ß ÅŸ™ƒ‚– Õ‚‰™ ÎÁ ‚ÝÍ• Åš„ àŸ™— à—œŸÁ ÎÁ Þ‚œŸ›ÔÁ Ü߉ ÍßÕœ›ƒ ÁÍ ËÍÁË霂酋Á à͇œ„ ÚŸ à— Ýœ—ÿ› Ë‚žœŒŸ„ ¬ËœŒ‚ƒ à…ŒÁË ÿ‹Í…‹Ë à‰• ÞŸ› ‚‡œÀ ÎÁ ËŸŸ‚›œ àË‚•…‹Á Ì’‚— Åž‡ ß ‚àŸŒ‚‰ Ëœœ‚› ÿŸ‚Í…›ÁÍ‚„ ÝŸÕœ… ÿÁ̓ ÍË Ëßé‡ßé› ÿ‚éÍé…é›ÁÍ‚„ Ä‚ˆ ÿÁ̓ Å‚‰• Ã‚Š…œÁ ß ‚ÿ„— ËÁË… ÞËßΕÁ à— ÚŸ UML Diagram 1 .ÝËß›œ ØÌ‰ ÁÍ Å›‹– ÞŸÁ ¬ËŸ‚›œÿ› ̓Á̓ ßË ÁÍ Ä‚ˆ à͇œ„ .ËË ÿ› àìÁÍÁ PFPageSetup К— ÎÁ ÑŠƒ ÅŸ‚ŽÍ ß Ãߊ ÿ‹Í̓ áÍŸ˜ à‡Ÿ…œ ß Ãé™‚é– ØÁËéÁ àéƒ à— Ü‚‰ .Ë‹Íÿ› Þ‚Ÿ‚„ àƒ Ä‚ˆ Ù‚– ÉÍÔ ËÍß› ÍË ‚› Ɖƒ à雂œÍƒ ´ ÑŠƒ ÍË .ËÍ— ÝŸÁߊ ÖßÍŒ ÁÍ ÿ‹Ÿßœ à›‚œÍƒ ¬ËŸË̓ ÿ„ ÁÍ Ã߈͂žˆ ß PFPage ¬PFDocument Üé›‚éŒ àé— Ëß雜 ÝŸÁߊ ÖßÍŒ ÁÍ ÿ™Á ÿ‚ÿŸŒ ÿ‹Ÿßœ .ËŸŒ‚ƒ Ù•ß› Ä‚ˆ Í›Á ÍË .ËŒ‚ƒÿ› PFPrintObject
Resources |
|
![]()
Copyright 2001, JavaWorld/PC WORLD Iran/IDG Inc. All rights reserved.