xvi ÅéóáãùãÞ... vii Åõ áñéóôßåò...xiii ÌÝñïò É: ÅéóáãùãÞ óôçí Java 1 ÊåöÜëáéï 1: Ìßá Åðéóêüðçóç ôçò Java... 3 Ìßá Óýíôïìç Éóôïñßá ôçò Java... 3 ÅéóáãùãÞ óôï ÐåñéâÜëëïí ôçò Java... 5 Ç Ãëþóóá Java... 6 ÂéâëéïèÞêåò ÊëÜóåùí Java (ÁÑÉ Java)... 6 Ôï ÐåñéâÜëëïí ÅêôÝëåóçò ôçò Java... 6 Ç Java ÅéêïíéêÞ Ìç áíþ... 7 Åñãáëåßá Java... 7 Java ÂïçèçôéêÝò ÅöáñìïãÝò... 8 Java ÅöáñìïãÝò... 8 ëëá Java ÐñïãñÜììáôá... 8 Ïñéóìüò ôçò Java... 9 ÁðëÞ... 10 ÁíôéêåéìåíïóôñáöÞò Ðñïãñáììáôéóìüò... 11 ÊáôáíïìÞ... 14 ÌåôÜöñáóç... 14 Äýíáìç... 15 ÁóöÜëåéá... 16 Áñ éôåêôïíéêü ÏõäÝôåñç... 18 Äõíáôüôçôá ÌåôáöïñÜò... 19 ÕøçëÞ Áðüäïóç... 20 ÐïëõíçìáôéêÞ... 21 ÄõíáìéêÞ... 22 Ç Java óå Ýíá ÊÝëõöïò... 23 Ç Java ùò ðñïò C/C++... 24 Ôýðïé ÄåäïìÝíùí... 24 ÊëÜóåéò êáé ÌÝèïäïé... 27 ÔåëåóôÝò... 28 Ïñßóìáôá ÃñáììÞò Åíôïëþí... 29 ÓõìâïëïóåéñÝò... 31 Ó üëéá... 31 Ôá Õðüëïéðá... 33
xvii ÊåöÜëáéï 2: ÁíôéêåéìåíïóôñáöÞò Ðñïãñáììáôéóìüò êáé Ïñïëïãßá... 37 Ôé Ìðïñåßôå íá ÐåñéìÝíåôå áðü Áõôü ôï ÊåöÜëáéï;... 38 Ïñïëïãßá ôïõ Áíôéêåéìåíïóôñáöïýò Ðñïãñáììáôéóìïý... 39 Áöáßñåóç... 41 ÓõíäõÜæïíôáò ÊáôÜóôáóç êáé ÓõìðåñéöïñÜ... 44 ÄåäïìÝíá êáé ÌÝèïäïé... 45 ÅíèõëÜêùóç (áðüêñõøç ðëçñïöïñéþí)... 48 ÄéáóõíäÝóåéò... 50 Ìçíýìáôá: åðéêïéíùíßá áíôéêåéìýíùí ìå áíôéêåßìåíá... 50 ÁñèñùôÜ ÐñïãñÜììáôá... 53 Êáôçãïñéïðïßçóç... 53 ÁíÜëõóç êáé Ó åäéáóìüò óôïí ÁíôéêåéìåíïóôñáöÞ Ðñïãñáììáôéóìü... 65 ÊåöÜëáéï 3: Ôá ÂáóéêÜ Ó åäßáóçò óôçí Java... 69 Ó åäéüæïíôáò ÐñïãñÜììáôá êáé íá ÐåñéâÜëëïí ñþóôç... 70 Äßíïíôáò ôïí ëåã ï óôïí ñþóôç... 73 ëåã ïò ôïõ Ðïíôéêéïý... 73 ëåã ïò Ðëçêôñïëïãßïõ... 74 ÂïçèçôéêÝò ÅöáñìïãÝò: íá óôáìáôïýí üôáí ôåñìáôßæïõí!... 75 ÅõÝëéêôåò âïçèçôéêýò åöáñìïãýò... 75 ÈÝìáôá Åýñïõò ÌåôÜäïóçò... 76 Ðïëåìþíôáò óôéò óôåíþóåéò ôùí äéêôýùí... 76 ñçóéìïðïéþíôáò åéêüíåò êáé ñþìáôá... 78 Ôá ÓõóôÞìáôá ôùí ñçóôþí... 82 ñçóéìïðïéþíôáò åíóùìáôùìýíá ñþìáôá... 83 Óôåíþóåéò êáôü ôçí åðåîåñãáóßá... 86 ÅðéëÝãïíôáò ãñáììáôïóåéñýò... 87 Ðñüóâáóç Áñ åßùí êáé ÈÝìáôá Äéêôýùí... 87 Áíáêáëþíôáò áñ åßá... 87 ÅëÝã ïíôáò ôïðéêü, åìöáíßæïíôüò ôï ðáãêüóìéá... 88 ëëá ÈÝìáôá... 88 Åéêüíåò ìßá ðáãêüóìéá ãëþóóá... 88 Äéá åéñéóôýò äéüôáîçò... 89 Åðéêïéíùíßá ìåôáîý âïçèçôéêþí åöáñìïãþí... 89 ÐñïãñÜììáôá äéðëïý óêïðïý... 90 Äéá åßñéóç ôïõ Êþäéêá ÐñïÝëåõóçò... 90 Ìüíï ìßá êëüóç óå Ýíá áñ åßï ðñïýëåõóçò... 90 Ôåêìçñßùóç... 91 ÅðéëÝãïíôáò ïíüìáôá ìåôáâëçôþí... 92 ÁëëÜæïíôáò ìåôáâëçôýò... 92 Áðïöåýãïíôáò åããåíþ êþäéêá... 93 ÊïéôÜæïíôáò óôï ðáñáóêþíéï... 93 ÏñãÜíùóç ìå ðáêýôá... 94
xviii ÊåöÜëáéï 4: Ç ÅöáñìïãÞ êáé ç ÂïçèçôéêÞ ÅöáñìïãÞ Hello World... 97 ÅöáñìïãÞ ùò ðñïò ÂïçèçôéêÞ ÅöáñìïãÞ... 97 ÅöáñìïãÞ HelloWorld... 98 ÄïìÞ Êáôáëüãùí ôçò ÅöáñìïãÞò... 99 ÅéóÜãïíôáò êáé áðïèçêåýïíôáò ôïí êþäéêá... 100 Äçëþíïíôáò ìßá íýá êëüóç... 101 Äçëþíïíôáò ìßá íýá ìýèïäï... 102 ÅéóáãùãÞ óôá ôñïðïðïéçôéêü ðñüóâáóçò... 102 Ìåôáãëùôôßæïíôáò ôïí êþäéêá... 105 Åêôåëþíôáò ôçí åöáñìïãþ... 108 Ç ÂïçèçôéêÞ ÅöáñìïãÞ HelloWorld... 109 ÄïìÞ êáôáëüãïõ âïçèçôéêþò åöáñìïãþò... 109 ÅéóÜãïíôáò êáé áðïèçêåýïíôáò ôïí êþäéêá... 110 Ìåôáãëùôôßæïíôáò ôçí íýá âïçèçôéêþ åöáñìïãþ... 115 Åêôåëþíôáò ôçí âïçèçôéêþ åöáñìïãþ (ÌÝñïò É).... 115 Äçìéïõñãþíôáò Ýíá HTML áñ åßï... 116 ñçóéìïðïéþíôáò ôéò éäéüôçôåò WIDTH êáé HEIGHT... 117 ÈÝìáôá åõáéóèçóßáò ðåæþí-êåöáëáßùí óôçí HTML... 117 Åêôåëþíôáò ôçí âïçèçôéêþ åöáñìïãþ (ÌÝñïò ÉÉ)... 118 Æþíôáò óôï Web... 118 Ðñïò ôá åìðñüò êáé ðñïò ôá ðüíù... 119 ÊåöÜëáéï 5: ÓôáäéáêÞ ÅîÝôáóç ôïõ Êþäéêá... 121 Íá Âåëôéþóåôå Þ íá Åðåêôåßíåôå;... 121 Åðåêôåßíïíôáò ôçí êëüóç HelloWorldApplet... 123 Äçìéïõñãþíôáò ôï HTML áñ åßï... 127 ÅîåôÜæïíôáò ÂÞìá-ðñïò-ÂÞìá ôïí Êþäéêá... 129 ÅéóÜãïíôáò êëüóåéò... 129 Ó üëéá ôåêìçñßùóçò... 137 ÄÞëùóç êëüóåùí... 140 ÌåôáâëçôÝò... 143 ÌÝèïäïé... 146 Äçìéïõñãþíôáò ÍÝåò ÊëÜóåéò... 151 ÌÝñïò ÉÉ: Ï Ôñüðïò ðïõ Äïõëåýåé ç Java 169 ÊåöÜëáéï 6: Ç Óýíôáîç ôçò Java: ÄéáêñéôéêÜ, Ôýðïé êáé ÔéìÝò... 171 Ôá Óôïé åßá ðïõ Áãíïåß ï ÌåôáãëùôôéóôÞò... 172 Ó üëéá... 173 Êåíüò þñïò êáé óôõë êùäéêïðïßçóçò... 175 ÄéáêñéôéêÜ... 176 ËÝîåéò ÊëåéäéÜ... 176 ÐñïóäéïñéóôéêÜ... 177 ÓôáèåñÝò... 179 Äéá ùñéóôéêü... 182
xix ÔåëåóôÝò... 183 Ôýðïé êáé ÔéìÝò... 183 Âáóéêïß ôýðïé êáé ôéìýò... 184 Ôýðïé áíáöïñþí êáé ôéìýò... 188 ÊåöÜëáéï 7: Ó åôéêü ìå ÌåôáâëçôÝò, Ìåèüäïõò, ÐáñáóôÜóåéò êáé ëåã ï ÑïÞò... 195 ÌåôáâëçôÝò... 195 ñþóåéò ìåôáâëçôþí... 196 Äçëþíïíôáò ìåôáâëçôýò... 198 Áñ éêïðïéþíïíôáò êáé áðïèçêåýïíôáò ôéìýò óå ìåôáâëçôýò... 200 Ðåäßï äñüóçò ìåôáâëçôþí... 202 ÌÝèïäïé... 204 Äçëþíïíôáò ìåèüäïõò... 204 ÐáñáóôÜóåéò... 210 ÔåëåóôÝò... 211 Ðñïôåñáéüôçôá ôåëåóôþí... 211 Åöáñìüæïíôáò óåéñü ðñïôåñáéüôçôáò... 213 Ôýðïé ôåëåóôþí... 214 ÅíôïëÝò ÅëÝã ïõ ÑïÞò... 216 Ïé åíôïëýò if... 216 Ç åíôïëþ switch... 219 Ïé âñüã ïé while êáé do-while... 220 Ï âñüã ïò for... 221 Ïé åíôïëýò ìåôáðþäçóçò... 222 ÊåöÜëáéï 8: Äçìéïõñãßá êáé ñþóç ÐéíÜêùí êáé Óõìâïëïóåéñþí... 227 Ðßíáêåò... 228 Äçìéïõñãþíôáò Óôéãìéüôõðá ÐéíÜêùí... 229 Áõôï-Áñ éêïðïßçóç... 229 Áñ éêïðïßçóç óå ìßá ÃñáììÞ... 229 Ïñßæïíôáò êáé Áíáêáëþíôáò Óôïé åßá åíüò Ðßíáêá... 230 Ðßíáêáò áðü Ðßíáêåò... 233 ÅîáéñÝóåéò... 234 ÓõìâïëïóåéñÝò (java.lang.string)... 234 Äçìéïõñãþíôáò ÓõìâïëïóåéñÝò... 235 ñçóéìïðïéþíôáò óõìâïëïóåéñýò... 239 ÓôáèåñÝò áñáêôþñùí... 240 StringBuffer (java.lang.stringbuffer)... 244 Äçìéïõñãþíôáò StringBuffer... 245 ÌÞêïò êáé ùñçôéêüôçôá åíüò StringBuffer... 246 ÐñïóèÝôïíôáò êáé áëëüæïíôáò óôïé åßá óå Ýíá StringBuffer... 246 Wrapper... 248 java.lang.boolean... 250 java.lang.character... 250 java.lang.number... 251
xx Ïñßóìáôá ÃñáììÞò Åíôïëþí Êáé Éäéüôçôåò Åôéêåôþí Applet... 253 Java ïñßóìáôá ãñáììþò åíôïëþí... 254 Ðåñíþíôáò ðëçñïöïñßåò óå âïçèçôéêýò åöáñìïãýò... 259 ÊëÜóåéò Collection áðü ôï ÐáêÝôï java.util... 264 ÄéáóõíäÝóåéò... 264 ÁöçñçìÝíåò ÊëÜóåéò ãéá ôéò ÓõëëïãÝò... 266 Óõìðáãåßò ÊëÜóåéò ãéá ôéò ÓõëëïãÝò... 266 ÊåöÜëáéï 9: ÊëÜóåéò, ÄéáóõíäÝóåéò êáé ÐáêÝôá... 271 ÊëÜóåéò... 271 ÄÞëùóç êëüóçò... 272 Óþìá êëüóçò... 278 ÅóùôåñéêÝò ÊëÜóåéò... 290 íèåôåò êëüóåéò êïñõöáßïõ åðéðýäïõ êáé äéáóõíäýóåéò.... 291 ÊëÜóåéò ìýëç... 291 ÔïðéêÝò êëüóåéò... 292 Áíþíõìåò êëüóåéò... 292 ÄéáóõíäÝóåéò... 294 ÐáêÝôá... 296 ñçóéìïðïéþíôáò ôá ðáêýôá... 297 ìåóåò áíáöïñýò êëüóåùí óå åéóá èýíôá ðáêýôá... 299 ÄéåíÝîåéò ïíïìüôùí... 300 Äçìéïõñãþíôáò ðáêýôá... 300 ÊåöÜëáéï 10: Êëçñïíïìéêüôçôá, Óýíèåóç êáé Ðïëõìïñöéóìüò... 303 Åðáíá ñçóéìïðïßçóç... 304 Êëçñïíïìéêüôçôá... 306 Ç ãïíéêþ êëüóç êáé õðïêëüóç... 306 Êßíäõíïé áðü ôçí åðýêôáóç Þ ôçí áðüêñõøç ôçò ëåéôïõñãéêüôçôáò ìßáò õðïêëüóçò... 308 Ç åõáßóèçôç ðëåõñü ôçò êëçñïíïìéêüôçôáò... 310 Ðïëõìïñöéóìüò... 311 Óýíèåóç... 316 Ôï ðñüâëçìá ôïõ äéáìáíôéïý... 316 ñçóéìïðïéþíôáò ôçí óýíèåóç... 318 ÄéáóõíäÝóåéò... 319 ÊåöÜëáéï 11: ÅîáéñÝóåéò êáé åéñéóìüò Ëáèþí... 323 ÅîáéñÝóåéò... 324 Ðáñáäåßãìáôá åîáéñýóåùí... 324 ñçóéìïðïéþíôáò åîáéñýóåéò ãéá åéñéóìü ëáèþí... 326 Åìöáíßæïíôáò åîáéñýóåéò... 328 ÓõëëáìâÜíïíôáò ôéò åîáéñýóåéò... 331 Ôï ôìþìá finally... 334 Óýëëçøç Þ äþëùóç... 335
xxi Ðåñéïñßæïíôáò ôá ËÜèç ôïõ ÊþäéêÜ óáò... 336 ÐñïåéäïðïéÞóåéò ôïõ ìåôáãëùôôéóôþ... 336 Ï ñüëïò óáò... 338 ÌÝñïò ÉÉÉ: ÂéâëéïèÞêåò ÊëÜóåùí ÐõñÞíá 341 ÊåöÜëáéï 12: ÓõëëïãÝò, ÂïçèçôéêÜ ÐñïãñÜììáôá êáé ÄïìÝò ÄåäïìÝíùí... 343 Ï Ñüëïò ôùí Óõëëïãþí... 343 Ç ëßóôá... 344 Ç áðåéêüíéóç... 344 Ôï óýíïëï... 345 Ôï äýíôñï... 345 ÊÜôé ðåñéóóüôåñá áðü äåäïìýíá... 346 Ôï ðáêýôï java.util (Óõíå ßæåôáé)... 346 Îåêéíþíôáò ôç óõëëïãþ... 346 ÅðáíáëÞøåéò... 350 Äéáôçñþíôáò ìßá ëßóôá... 350 Áðåéêïíßóåéò... 352 ñçóéìïðïéþíôáò ôéò ÓõëëïãÝò... 352 ñçóéìïðïéþíôáò Ëßóôåò êáé ÅðáíáëÞøåéò... 353 ñçóéìïðïéþíôáò Óýíïëá... 353 ñçóéìïðïéþíôáò Áðåéêïíßóåéò... 354 åéñéóìüò Óõëëïãþí... 356 Ôáîéíüìçóç... 356 ÅëÝã ïíôáò ôéò áëëáãýò... 358 Äçìéïõñãþíôáò ìßá ôõ áßá ëßóôá... 358 ÁíôéóôñÝöïíôáò ôá ðåñéå üìåíá ôçò ëßóôáò... 359 ÊÜíïíôáò áíôßãñáöá... 359 ÁíáæÞôçóç... 360 ÄéÜöïñïé ÌÝèïäïé... 360 Äéáôçñþíôáò Ëßóôåò ÉäéïôÞôùí... 361 Ãéáôß íá ñçóéìïðïéþóïõìå ëßóôåò éäéïôþôùí;... 361 Öïñôþíïíôáò éäéüôçôåò áðü ôï äßóêï... 362 Áðïèçêåýïíôáò Éäéüôçôåò óå Äßóêï... 363 ñçóéìïðïéþíôáò Éäéüôçôåò óå ÂïçèçôéêÝò ÅöáñìïãÝò... 363 ÊåöÜëáéï 13: Åßóïäïò / îïäïò: ÓåéñÝò ÄåäïìÝíùí... 367 Ó åôéêü ìå ôéò ÓåéñÝò ÄåäïìÝíùí... 367 ÔõðéêÝò ÓåéñÝò ÄåäïìÝíùí ôïõ ÓõóôÞìáôïò (java.lang.system)... 368 ÔõðéêÞ Ýîïäïò (System.out)... 368 ÔõðéêÞ åßóïäïò (System.in)... 369 ÔõðéêÜ ëüèç (System.err)... 369 ÓåéñÝò ÄåäïìÝíùí java.io... 370 ÊëÜóåéò Óåéñþí ÄåäïìÝíùí... 370 InputStream... 371 OutputStream... 376
xxii ÓåéñÝò ÄåäïìÝíùí Åéäéêïý Óêïðïý... 379 Áñ åßá åéóüäïõ... 380 Áñ åßá åîüäïõ... 382 Áñ åßá êáé êáôüëïãïé... 385 ÓõìâïëïóåéñÝò... 389 Ðßíáêåò ìå byte... 390 CharArrayReader êáé CharArrayWriter... 392 ÓåéñÝò... 393 Äéï åôåýóåéò... 394 ÖéëôñáñéóìÝíåò ÓåéñÝò ÄåäïìÝíùí... 396 É/Ï ìå Buffer... 396 Áñéèìïß ãñáììþí... 397 ÂÜæïíôáò ðßóù... 398 É/Ï ìå Ôýðïõò... 399 PrintStream... 403 PrintWriter... 406 Óåéñïðïßçóç áíôéêåéìýíùí... 406 Ðåñéóóüôåñá ãéá ôçí Åßóïäï / îïäï... 407 ÊåöÜëáéï 14: ÍÞìáôá... 409 Ó åôéêü ìå ôá ÍÞìáôá... 409 Îåêéíþíôáò ìå ôá ÍÞìáôá... 412 Ôýðïé íçìüôùí... 412 Äçìéïõñãþíôáò Ýíá íýï íþìá.... 412 ñçóéìïðïéþíôáò ÍÞìáôá óå ÂïçèçôéêÝò ÅöáñìïãÝò... 414 Éäéüôçôåò ôùí ÍçìÜôùí... 418 Óþìá íþìáôïò... 418 ÊáôÜóôáóç íþìáôïò... 419 Ðñïôåñáéüôçôá íçìüôùí... 425 ÍÞìáôá äáßìïíåò... 426 ÏìÜäåò íçìüôùí... 427 ñçóéìïðïéþíôáò ôç óõíüñôçóç äçìéïõñãßáò Thread()... 435 Äçìéïõñãþíôáò áíôéêåßìåíá ìå íþìáôá... 435 ñçóéìïðïéþíôáò íþìáôá... 437 Runnable Þ Thread;... 438 Óôáìáôþíôáò íþìáôá... 438 ÐïëõíçìáôéêÜ ÐñïãñÜììáôá... 440 Óõã ñïíéóìüò... 440 ÁäéÝîïäá... 442 ÂÜæïíôÜò ôá ¼ëá Ìáæß... 443 ÍÞìáôá êáé Áðüäïóç... 446 ÊåöÜëáéï 15: Äéêôýùóç... 447 ÓôïéâÜæïíôáò ÄåäïìÝíá ìå Äéåõèýíóåéò êáé Èýñåò... 447 Ôé õðüñ åé óå ìßá äéåýèõíóç;... 448 Ç ÉÑ äéåýèõíóç... 448
xxiii Ôï ðñùôüêïëëï... 448 Ï áñéèìüò èýñáò... 449 Áðü ôï äßêôõï óôï äéáäýêôéï... 450 Ç Óôïßâá TCP/IP... 451 Socket... 452 TCP Þ UDP... 452 ÉÑ... 452 Äßêôõï... 452 Socket... 453 Âñßóêïíôáò ìßá äéåýèõíóç... 453 Äéáìïñöþíïíôáò Ýíáí áðëü äéáêïìéóôþ õðïäï Þò... 454 íáò áðëüò ðåëüôçò socket... 458 Ëåéôïõñãßåò ôùí URL... 459 Âáóéêïß åéñéóìïß URL... 462 Ç áñðáãþ ôçò ùñáßáò Web óåëßäáò... 464 ÊñõðôïãñÜöçóç ôçò óõìâïëïóåéñüò URL... 465 Ëåéôïõñãßåò ôùí URL ÓõíäÝóåùí... 465 Ïé åéóåñ üìåíåò åðéêåöáëßäåò... 469 Ïé Ëåéôïõñãßåò RMI... 470 ÅðéëïãÞ ðáêýôïõ... 471 Äçìéïõñãßá ìßáò ãåíéêþò äéáóýíäåóçò... 471 ÐáñÝ ïíôáò Ýíá åéñéóìü... 471 ÔìÞìáôá êþäéêá êáé ï óêåëåôüò... 473 Îåêéíþíôáò ôï ìçôñþï... 473 Îåêéíþíôáò ôïí äéáêïìéóôþ... 474 Ç âïçèçôéêþ åöáñìïãþ ðïõ êüíåé ôçí êëþóç... 474 HTML... 475 Åíåñãïðïßçóç... 475 ÊåöÜëáéï 16: JDBC: Ôï Java ÁÑÉ ãéá Óýíäåóç ìå ÂÜóåéò ÄåäïìÝíùí... 479 ÅéóáãùãÞ óôï JDBC... 479 ÊáèïëéêÞ óýíäåóç âüóåùí äåäïìýíùí áðü ôç Java... 480 ÂáóéêÜ áñáêôçñéóôéêü ôïõ JDBC... 480 JDBC óôïé åßá... 481 ôïéìï ãéá ðåëüôç / äéáêïìéóôþ... 484 Ïñéóìüò äåäïìýíùí êáé åéñéóìüò ôïõò ñçóéìïðïéþíôáò SQL... 484 JDBC ðñïãñüììáôá ïäþãçóçò... 487 Åðéóêüðçóç ôïõ ÁÑÉ... 489 ÔõðéêÝò ñþóåéò... 491 Óõíäåüìåíïé óå ìßá ÁðïìáêñõóìÝíç ÂÜóç ÄåäïìÝíùí... 492 ÅðéëÝãïíôáò Ýíá êáôüëëçëï ðñüãñáììá ïäþãçóçò... 492 Åíôïðßæïíôáò ôçí âüóç äåäïìýíùí... 494 Äçìéïõñãþíôáò ìßá óýíäåóç... 495 Åêôåëþíôáò ÅñùôÞìáôá êáé Åíçìåñþóåéò ÂÜóåùí ÄåäïìÝíùí... 496 ÅñùôÞìáôá êáé åíçìåñþóåéò âüóåùí äåäïìýíùí... 497 Áíáêáëþíôáò ôá áðïôåëýóìáôá... 500 ÈÝìáôá áðüäïóçò... 504
xxiv ÂÜæïíôáò ôï JDBC íá äïõëýøåé... 505 Ôï JDBC API... 510 Äéáóýíäåóç Array... 510 Äéáóýíäåóç Blob... 510 Äéáóýíäåóç java.sql.callablestatement... 511 Äéáóýíäåóç java.sql.clob... 512 Äéáóýíäåóç java.sql.connection... 512 Äéáóýíäåóç DatabaseMetaData... 513 Äéáóýíäåóç java.sql.driver... 521 Äéáóýíäåóç java.sql.preparedstatement... 521 Äéáóýíäåóç Java.sql.Ref... 523 Äéáóýíäåóç java.sql.resultset... 523 Äéáóýíäåóç java.sql.resultsetmetadata... 528 Äéáóýíäåóç java.sql.sqldata... 529 Äéáóýíäåóç java.sql.sqlinput... 529 Äéáóýíäåóç java.sql.sqloutput... 530 Äéáóýíäåóç java.sql.statement... 530 ÊëÜóç java.sql.struct... 531 ÊëÜóç java.sql.date... 532 ÊëÜóç java.sql.drivermanager... 532 ÊëÜóç java.sql.driverpropertyinfo... 533 ÊëÜóç java.sql.time... 533 ÊëÜóç java.sql.timestamp... 533 ÊëÜóç java.sql.types... 534 ÊëÜóç java.sql.datatruncation... 535 ÊëÜóç java.sql.datatruncation... 536 ÊëÜóç java.sql.sqlexception... 536 ÊëÜóç java.sql.sqlwarning... 537 Ðñï ùñçìýíåò Ôå íéêýò... 537 ÅíôïëÝò ðñïåôïéìáóßáò âüóçò äåäïìýíùí... 537 ÁðïèçêåõìÝíåò äéáäéêáóßåò... 542 ÓõíáëëáãÝò âüóåùí äåäïìýíùí... 545 Ó åäßáóç ôñéþí âáèìßäùí... 548 Ôï JDBC ðñïáéñåôéêü ðáêýôï... 549 ÌÝñïò IV: Äéáëïãéêüôçôá ìå ôïí ñþóôç 553 ÊåöÜëáéï 17: Åðéóêüðçóç ôïõ AWT (Abstract Windowing Toolkit)... 555 Ôï AWT ùò ðñïò ôï JFC êáé ôï Swing... 556 Ðáñïõóßáóç ôïõ Abstract Windowing Toolkit... 559 ÂáóéêÞ ïñãüíùóç... 560 Ôï ÐáêÝôï java.awt... 561 åéñéóìüò ÓõìâÜíôùí... 569 Ôï éåñáñ éêü ìïíôýëï... 571 Ôï ìïíôýëï áíüèåóçò... 576
xxv Ôï Óýóôçìá ÓõíôåôáãìÝíùí... 581 Ïé x êáé y óõíôåôáãìýíåò... 582 ÁêÝñáéåò ôéìýò... 582 ÂÜæïíôÜò ôá ¼ëá Ìáæß... 586 ÊïíôÝéíåñ... 587 Äéá åéñéóôýò äéüôáîçò... 588 ÊåöÜëáéï 18: Ôá ÂáóéêÜ ãéá ôá ñþìáôá, ôéò ÃñáììáôïóåéñÝò êáé ôéò Åéêüíåò 591 ÅéóáãùãÞ óôçí Java 2D... 591 Ôé ÊÜíåé ç Java 2D;... 592 ÄéÜöïñá ðåñéâüëëïíôá... 592 åéñéóìüò ñùìüôùí... 593 ã ñùìç áíáðáñüóôáóç... 593 ñþìá ðñïóêçíßïõ / öüíôïõ... 593 Äçìéïõñãþíôáò ÃñáöéêÜ... 594 ÖÝñíïíôáò Ýíá ãñáöéêü ðåñéâüëëïí... 594 Ó åäéüæïíôáò âáóéêü ó Ýäéá... 596 åéñéóìüò Ãñáììáôïóåéñþí... 602 Äçìéïõñãþíôáò ãñáììáôïóåéñýò... 602 Âñßóêïíôáò ôéò åãêáôåóôçìýíåò ãñáììáôïóåéñýò... 603 ñçóéìïðïéþíôáò ìåôñþóåéò ãñáììáôïóåéñþí... 604 åéñéóìüò Åéêüíùí... 606 ÔõðéêÝò åéêüíåò... 607 Ðéï áðïôåëåóìáôéêýò åéêüíåò... 611 Åêôýðùóç... 615 Ôõðþíïíôáò êëüóåéò... 615 Îåêéíþíôáò ôçí äéáäéêáóßá åêôýðùóçò... 616 ÅëÝã ïíôáò ôçí åêôýðùóç... 617 ÊåöÜëáéï 19: Ôá ÊïíôÝéíåñ êáé ÂáóéêÝò ÉäÝåò... 621 Áíïßãïíôáò ôï ÐáñÜèõñï... 621 Ôá ðáñüèõñá óôïí êüóìï... 621 ÐáñÜèõñá Äéáëüãïõ... 625 ÐåñéëáìâÜíïíôáò ëëá Óôïé åßá... 628 Component... 628 Container... 632 Canvas... 633 Panel... 633 ÁðëÜ Óôïé åßá... 633 ÅôéêÝôåò... 634 ÊïõìðéÜ... 634 Ðëáßóéá ÅëÝã ïõ êáé ÊïõìðéÜ ÅðéëïãÞò... 635 Ìåíïý ÅðéëïãÞò... 636 Ëßóôåò... 637 Ìåíïý... 638 Óôïé åßá Ìåíïý... 639
xxvi Ç ÃñáììÞ Ìåíïý... 641 Ðôõóóüìåíá ìåíïý... 641 Áíáäõüìåíá ìåíïý... 643 ÊåöÜëáéï 20: Äéá åéñéóôýò ÄéÜôáîçò êáé ëëá Óôïé åßá... 645 Ôé Åßíáé Ýíáò Äéá åéñéóôþò ÄéÜôáîçò;... 645 Ôýðïé äéá åéñéóôþí... 646 Ïé ðñïêáèïñéóìýíïé äéá åéñéóôýò... 647 ÐñïóáñìïóìÝíïé äéá åéñéóôýò äéüôáîçò... 647 Ïé Äéá åéñéóôýò ÄéÜôáîçò ìå ËåðôïìÝñåéá... 647 Ï Äéá åéñéóôþò FlowLayout... 648 Ï äéá åéñéóôþò BorderLayout... 649 Ï äéá åéñéóôþò GridLayout... 650 Ï äéá åéñéóôþò GridBagLayout... 651 Ï äéá åéñéóôþò CardLayout... 654 Óôïé åßá ÊåéìÝíïõ... 655 Óôïé åßá êåéìýíïõ... 656 Ðåäßï êåéìýíïõ... 658 Ðåñéï Þ êåéìýíïõ... 658 ÊåöÜëáéï 21: Ôá ÂáóéêÜ ãéá ôï Swing: Óôïé åßá êáé ÊïíôÝéíåñ... 661 ÅéóáãùãÞ óôï Swing... 662 Áðü ôï AWT óôï Swing... 662 Ç éåñáñ ßá ôùí óôïé åßùí Swing... 665 Ç êëüóç âüóçò JComponent... 665 ÂáóéêÜ Óôïé åßá Swing... 666 Ç êëüóç javax.swing.jframe... 666 Swing êïíôýéíåñ... 669 Åìöáíßæïíôáò êåßìåíï ìå ôï javax.swing.jlabel... 671 Ôï Êïõìðß ôïõ Swing... 674 ÊåöÜëáéï 22: Ôá ÂáóéêÜ Óôïé åßá Swing êáé ôá ÓõìâÜíôá ðïõ Äçìéïõñãïýí... 681 Ôá Ìåíïý ôïõ Swing... 682 ÃñáììÝò ìåíïý êáé ìåíïý... 682 Óõíôïìåýóåéò êáé ðëþêôñá åðéôü õíóçò ãéá ìåíïý... 687 Áíáäõüìåíá ìåíïý êáé êáíüíåò åíåñãïðïßçóçò... 689 JToolbar... 691 Ôá ÓõìâÜíôá ôïõ Swing... 693 íá ðáñüäåéãìá óõìâüíôïò êïõìðéïý êáé ìåíïý... 693 Ðåñéóóüôåñç ëåéôïõñãéêüôçôá åéñéóìïý óõìâüíôùí óå ó Ýóç ìå ôï Swing... 700 ÊåöÜëáéï 23: ÍÝá ÃñáöéêÜ Óôïé åßá ôçò ÂéâëéïèÞêçò Swing... 711 ÊïõìðéÜ... 712 JToggleButton... 712
xxvii JCheckBox... 712 JRadioButton êáé ButtonGroup... 715 Ôá JRadioButtonMenuItem êáé JCheckBoxMenuItem... 719 ëëåò ÓõóêåõÝò ãéá íá ÊÜíåôå ÅðéëïãÝò... 721 JOptionPane... 721 JList... 725 JComboBox... 727 JFileChooser... 728 JColorChooser... 729 JSlider... 732 ÊïíôÝéíåñ... 733 JSplitPane... 734 Ôï JTabbedPane... 735 Ôï JDesktopPane êáé JInternalFrame... 736 Êåßìåíï... 737 Ôï JTextField êáé JPasswordField... 738 JTextArea... 740 Ôï JEditorPane êáé JTextPane... 742 ÅìöÜíéóç... 747 JProgressBar... 748 JTable... 750 JTree... 751 ÊåöÜëáéï 24: Ôá Õðüëïéðá Óôïé åßá ôïõ Swing... 755 ÐåñéãñÜììáôá... 755 Ôï BorderFactory êáé ôï ðáêýôï javax.swing.border... 756 TitledBorder... 759 CompoundBorders... 761 Ïé Äéá åéñéóôýò ÄéÜôáîçò ôïõ Swing... 762 BoxLayout... 763 OverlayLayout... 764 ÐñïóáñìïóìÝíç ÅìöÜíéóç êáé ñþóç... 765 Êáèïñßæïíôáò ôçí åìöüíéóç êáé ñþóç... 766 Ðñïóáñìüæïíôáò ôçí åìöüíéóç êáé ñþóç... 768 Ãéá Üôïìá ìå åéäéêýò áíüãêåò... 770 Model - View - Controller... 771 ÌÝñïò V: ÁíÜðôõîç Âïçèçôéêþí Åöáñìïãþí êáé Åöáñìïãþí 775 ÊåöÜëáéï 25: ÁíÜðôõîç Âïçèçôéêþí Åöáñìïãþí êáé Åöáñìïãþí... 777 Ç ÁóöÜëåéá óôçí Java... 778 Ôé åßíáé åëåã üìåíï;... 778 Äéêáéþìáôá... 779 ÄéáâÜæïíôáò Ýíá áñ åßï ðïëéôéêþò... 780
xxviii Êáèïñßæïíôáò ìßá ðñïóáñìïóìýíç ðïëéôéêþ... 781 Æçôþíôáò äéêáéþìáôá... 781 ÅéóáãùãÞ óôï Java Plugin... 783 Åãêáèéóôþíôáò ôï Java Plugin... 783 ñçóéìïðïéþíôáò ôï Java Plugin... 786 Äïõëåýïíôáò ìå ôá Java Archive... 787 Ôé åßíáé Ýíá Java archive... 787 ñçóéìïðïéþíôáò JAR Áñ åßá... 788 Óå ìßá åöáñìïãþ... 788 Óå ìßá âïçèçôéêþ åöáñìïãþ... 789 Äéá åßñéóç JAR Áñ åßùí... 790 Äçìéïõñãþíôáò Ýíá íýï JAR áñ åßï... 790 ÅîÜãïíôáò ðëçñïöïñßåò... 791 ÅéóáãùãÞ óôï java.util.jar... 792 ÅëÝã ïíôáò ôéò JAR ÓõìðåñéöïñÝò.... 793 Åêäüóåéò... 793 Ç øçöéáêþ õðïãñáöþ... 793 ÅêôåëÝóéìá áñ åßá archive... 794 ÏíïìÜæïíôáò Üëëá archive... 795 ÐáñÜñôçìá Á: ÅãêáôÜóôáóç êáé äéáìüñöùóç ôïõ Java Software Development Kit (SDK)... 797 ÐáñÜñôçìá Â: ñçóéìïðïéþíôáò ôï Åñãáëåßï JavaDOC... 841 ÐáñÜñôçìá Ã: ÐåñéÞãçóç óôïí Êþäéêá ÐñïÝëåõóçò... 851 ÐáñÜñôçìá Ä: ÅðåêôÜóåéò óôïí ÐõñÞíá... 855 ÐáñÜñôçìá Å: Ôï ÌÝëëïí ôçò Java... 863 ÅõñåôÞñéï... 865