مفاهيم متقدمة في البرمجة بلغة الجافا

66
لجافارمجة بلغة ا متقدمة في البفاهيم مĖ كتا لجافاĕ رمجة بلغة لبĕ متقدمة في فاهيم م منĖلكتاĕ į يتكوربعةĕ تشرحĭ فصورمجة بلغةلبĕ تقدمة فيلمĕ فاهيملمĕ بعضلجافا،ĕ في منĭاوĕ فصللĕ Ėلكتاĕ نشرحلرسوميةĕ Įلمستخدĕ Ęجهاĕنشاء وĕ كيفية ، فيلثانيĕ فصللĕ نوضح في ه برمجةĘ تطبيقاApplet ميتهاهĕ و، فيالثلثĕ فصللĕ عنę نتحدة جافالبرمجĕ لغةĮĕ باستخدĘلبياناĕ عدĕ برمجة قو، فيبعĕلرĕ فصللĕ عنę نتحدفاهيم بعض مĘلشبكاĕ برمجة3102

Transcript of مفاهيم متقدمة في البرمجة بلغة الجافا

مفاهيم متقدمة في البرمجة بلغة الجافا OلجافاكتاN لبرمجة بلغةN مفاهيم متقدمة في

Nلفصل Nاوf من في Nلجافا،بعض Nلمفاهيم Nلمتقدمة في Nلبرمجة بلغة فصوf تشرح NربعةيتكوN hلكتاO من OلكتاN لرسومية نشرحN gلمستخدN QجهاNنشاء وN لثاني ، في كيفيةN لفصلNه برمجةفي نوضح QتطبيقاApplet

Nلفصل NلرNبع في ،برمجة قوNعد NلبياناQ باستخدgN لغة Nلبرمجة جافانتحدR عن Nلفصل Nلثالث في ،وNهميتها برمجة NلشبكاQ بعض مفاهيم نتحدR عن

3102

[email protected] Mohammed Mahmoud 1

بسم اه الرحمن الرحيم

البرمجة بلغة الجافا في مفاهيم متقدمة

موسى محمد محمود إبرNهيم

جامعة Nلزعيم NأYهري

ة NلمعلوماQيكلية علوN gلحاسوO وتقن

[email protected] Mohammed Mahmoud 2

الفهـــــــــرس: ة ................................................................................................ مقدمة:

ت .................................................... (NGUIلفصل Nاوf: وNجهاN QلمستخدN gلرسومية )

ت ............................................................................ Nلرسم وNلتلوين في جافا:

X .............................................................................. 9سم NاشكاN fلهندسية:

ة4 ...................................................................... دN gلرسومية:وNجهاN Qلمستخ

Qلثاني: تطبيقاN لفصلNApplets ................................................................... 3ب

بة ................................................... Nلفصل Nلثالث: برمجة قوNعد NلبياناQ باستخدgN جافا

ةة .................................. :ODBCتسجل قاعدN PلبياناQ في مصدX قوNعد NلبياناN Qلمفتوحة

بت ......................................................... Nلفصل NلرNبع: برمجة NلشبكاQ باستخدgN جافا

:QلشبكاN .......................................................................................... بت

gNلعميل باستخدNو gلخادN برمجةSocket Connection Stream: ....................... ةت

gNلعميل باستخدNو gلخادN برمجةConnectionless Datagram Socket: ............ 36

تN ........................................................................................... 3لمرNجع:

[email protected] Mohammed Mahmoud 3

:داءــاه

لىإNافاضل بكلية علوN gلحاسوO وتقانة NلمعلوماQ جامعة Nلزعيم NاYهري Nلي كل من علمني حرفا ي Nساتذت إلى

Nهدي لكم هذN Nلعمل NلمتوNضع.لوN gلحاسوO وتقانة NلمعلوماQ جامعة Nلزعيم NاYهري طاO كلية ع

[email protected] Mohammed Mahmoud 4

مقدمة: ギحやヲلや ه ギヨلحや،キヲらعヨلや هわヨムعم بح،キヲجヲلや ه كلわヨحケ تヤヨشヱ،キヲجヲل مムب ヲهヱ ロゲムأشヱ نهゅحらس ロギヨأح

ラゅلس،キヲヨله محま ا ラأ ギヰأشヱ ケヲヘلغや يك لهゲا ش ロギحヱ ا هま،キヱキヲلや من ギعヱ りゴلعゅعه بゅヅأ،キヲヤガلやヱ ギعヲتヱ

や،キヲلヨعやヱボلやヲヤء やلヨحキヲヨ، صゅحب やلケヱ ュゅボヨسヲله،ヱأشギヰ أラ نらيゅレ محやギヨ عギら ه やلヲقキヲ،عロゅダ بゅلれやク ケゅレ من

チヲلحやヱ،キヱケヲヨلや ヴヤعヱ يهヤه ع ヴヤصるكع آلゲلや ،بهゅأصحヱ ،キヲイلسや ينレمぽヨلや م منヰعらمن تヱ بعينゅわلやヱ

،キヲヰゼلや ま やゲيんك ゅヨيヤم تسヤسヱヴل ュヲليや.キヲعヲヨلや

ゅفゅイلや るغヤب るイمゲらلゅب るボヤعわヨلや هيمゅヘヨلや من キギع ゅفゅイلや るغヤب るイمゲらلや れゅسيゅسや メヱاや ゆゅわムلや في ゅレمギبقるفゅإضゅ

ヴحレヨلや るيレئゅك るイمゲらلや في るسيゅاسや هيمゅヘヨلや ليやObject Oriented Programming ゆゅわムلや やグفي ه

るمギボわヨلや هيمゅヘヨلや بعض ヴヤف عゲعわレسるイمゲらلや في メヱاや لダヘلや ،メヲダف るبعケや من ゆゅわムلや ラヲムわي ،ゅفゅイلや るغヤب

، ゅفゅイلや ュやギガわسゅب るميヲسゲلや ュギガわسヨلや れゅヰجやヱ るイمゲبヱ سمゲلゅب るボヤعわヨلや هيمゅヘヨلや بعض チゲنع ゆゅわムلや やグمن ه

るイمゲعن ب るトسらم りケヲダب ゐギحわني نゅんلや لダヘلや فيれゅボيらトت ( نتゲわانやApplet ضحヲلث فيه نゅんلや لダヘلや ،)

ゅボيらトت るイمゲب るイمゲらب るボヤعわヨلや هيمゅヘヨلや فيه بعض チゲبع نعやゲلや لダヘلや ،ゅفゅイلや るلغ ュやギガわسゅب れゅنゅيらلや ギعやヲق れ

.ゅفゅج るイمゲらلや るلغ ュやギガわسゅب れゅムらゼلや

[email protected] Mohammed Mahmoud 5

:fالفصل ااو( الرسومية gالمستخد QواجهاGUI)

メヱأや ゆゅわムلや في ゅهグيヘレتヱ ゅヰわبゅわムب ゅレヨي قわلや مجやゲらلや لجافا كلや るغヤب るمجゲらلや れساسياや わيわلや عن م ゅヰعل معゅヘ

ゲمやヱأや ゲトس るشゅيق شゲヅCommand ،ف ゅم ギل لحヨع ゲغي やグن هムل ゅهギهゅゼي نわلや ゆヲسゅلحや れゅボيらトわ

يゲ غやلヨسヱ ュギガわنسギガわمゅヰ في حيゅتゅレ تゲヰヌ بりケヲダ أكヱ ゲんضヲحヱ ゅأجヨل شムا ヱأسヰل やسやギガわمヱ ゅأقゆゲ لヰヘم

ゆヲسゅلحゅص بわガヨلや، ュヲسゲلやヱ メゅムأشや ギイレي فわلや るヘヤわガヨلや ラやヲألやヱ علتイ مجゅنゲらلや ゆクゅكج ،ュギガわسヨヤنل ゅヨ احظ

ダヘلや やグليラヲムわ ه. تイعل عヤヨيる تゅヘعل やلヨسュギガわ مع やلゲらنゅمج سやるヤヰأや れやヱキلるヘヤわガヨ مんل やلやヲボئم やヱأや ケやケコلわي

عや ヴヤأや れやヱキلわي تヲفゲهゅ في هや やグلボسم نわعゲف や Java Graphicsلボسم やاや メヱلゲسヲمれゅ في やلゅイفゅ، قسヨينمن

Graphicalـやヱ(GUI)جや れゅヰلヨسや ュギガわلゲسヲميや るلゅんني ボسمやلヲヤわين عヴヤ شゅشや るلゲらنゅمج. やلヱلغる جゅفゅ لゲヤسم

User Interface عن ゐギحわレسم سボلや やグفي ه ュギガわسヨلや れゅヰجやヱ يمヨダわب るصゅガلや ゅفゅج るلغ れやヱキمن أ るعヲヨイم

ゲらلや عل معゅヘわلや ヴヤع ュギガわسヨلや ギعゅي تسわلやヱ ،مجゅنゲらلや れゅشゅش ヱأبسط أヱ لヰأس りケヲダمج بゅا تنヱトわبヤ أ ヵ

ゅヰتゅلغヱ るイمゲらلゅب るفゲمع.

الرسم والتلوين في جافا: るلغ ゲفヲت るイمゲらلやりゲيらك るعヲヨイم ゅفゅفي ج りキヲجヲين مヲヤわلやヱ سمゲلや れやヱキمن أ ヱや るらわムヨلや るمゴلحやjava.awt

ヴヤف عゲعわن ラا أヱب أイي ゅヰليま ベゲトわن ラل أらقヱ るゃヘلや JFrame في キヲجヲヨلやヱ るمゴلحや javax.swing، ゲヰヌت

るゃف ヵや るゃヘلや من ゐゲتJFrame لムش ヴヤع るشゅゼلや ヴヤع ゅئيゅボヤتグヰلヱ ،グيヘレわلや ギレع るヤيトわمس りグفゅنロ لやゃヘる ئصゅダخ

ヱ قعヲمヱ مイم في حムحわヤل りゲيんك メやヱキئصゅダعض خらسم لボلや やグفي ه チゲعわن .るشゅゼلや ログسيق هレتヱ ケヲヰド や るゃヘل

JFrame، グه るيヨن أهヨムت るゃヘلや ロヰسم في أنゲヤل るらسレلゅل بんヨت ゅ ゅヰيヤم عわي سيわلや ،ينヲヤわلや ヱسم أゲلやك ログヰل ラや ゅヨ

るゃヘلや るنيゅムمま ءやギنるلやキ سمゲلや paint ギレع ゅئيゅボヤءتゅゼنや ئصゅダخ ゐゲت るゃئن من فゅك るゃヘلやJFrame. ضحヲي

りケゅらلعや ヴヤع ヵヲわتح るشゅゼلや ヴヤع りグفゅسم نケ るيヘلي كيゅわلや مجゅنゲらلやJava Graphics.

import java.awt.*;

import javax.swing.*;

public class FirstGraphics extends JFrame

{

public FirstGraphics()

{

super("My First Window");

setSize(200 , 100);

setVisible(true);

}

public void paint(Graphics g)

{

[email protected] Mohammed Mahmoud 6

g.drawString("Java Graphic" , 50 , 50);

}

public static void main(String args[])

{

FirstGraphics fg = new FirstGraphics();

}

}

るゃヘلやGraphics:

るゃヘلや ئن منゅيف كゲتع ギレعFirstGraphics، ヴヤع メヲダلحや مわيヱ るشゅゼلや ヴヤع りゲصغي りグفゅسم نケ مわي

ギيゼヨلや من りグفゅレلや ログه れゅヘصやヲمconstructor عن ゆاや るゃヘلや ギيゼم ュやギガわسゅب りグفゅレلや ログヰل ラやヲレع るبゅわن كムヨفي ،

ن كグلك تحギيギ أبعや キゅلゅレفりグ بゅسや ュやギガわلやギلヱ るتゲヨيゲ عや ラやヲレلゅレفりグ كヲسيط، يゲヅ)(super ムヨيق やسギわعゅء

setSize هي るمギガわسヨلや サゅيボلや في りギحヲلやヱ ،りグفゅレلや チゲعヱ メヲヅ لらボわي تسわلやヱPixel るلやギلや ュギガわتس ،

setVisible سيطヲلゅا، ف ュأ ゅهキやギعま ي تمわلや りグفゅレلや ケゅヰドま غب فيゲن ゅレك やクま ゅم ギيギحわلtrue ゅهケゅヰドま يレيع

هي paintي عケゅヰドま ュギهゅ حゅليケヱ ゅبゅヨ تم まعキやギهゅ لケヲヰヌヤ احゅボ خاや メلヘレわيや ،グلやギلる يعfalse レفやヱ やケヲلヲسيط

やキلる يわم نぼやギهゅ تゅボヤئيゅ بعギ تヘレيや グلゼヨيギ مゅらشヱ ،りゲتحヵヲわ عヴヤ جヨيع やلわعヤيや れゅヨلゅガصる بゅلゲسم やヱلヲヤわين، クヱلك

るゃヘلや ئن منゅムلや ュやギガわسゅبGraphics ゅب るصゅガلや メやヱギلや يعヨج ヴヤع ヵヲわيح ヵグلやヱ やグفي ه ギイين، نヲヤわلやヱ سمゲل

るلやギلや メゅんヨلやdrawString メゅんヨلや やグفي ه ヲهヱ ،りグفゅレلや ヴヤسم نص عゲل ュギガわي تسわلやヱJava Graphics ،

ヱيحわل やلゲقや ラゅヨلゅわليや ラゅلラやグヤ تسや ゅヨヰヤらボわلやギلや るأبعや キゅلわي يギらأ عギレهケ ゅسم やلレص.

مゲガجاや れلゲらنامج 1-1شムل

るゃヘلやColor:

ヵヲわتح るمゴلحや java.awt ヴلま るفゅضま るゃヘلやGraphics ヴヤع るゃヘلやcolor لやヱわ تي ゲتغييヱ ギيギتح るنيゅムمま ゲفヲ

ゲヅيわボين: بみحンギألや ラやヲأشやヱ メゅムلヘヤガيヱ ،れゅيムヨن まعキやギ لラヲ معين اسやギガわمه في やلゲسم

أصا عヴヤ شムل ثやヲبت. やcolorلヲヨجキヲ في やلるゃヘ . بゅسや ュやギガわألや ラやヲلわي 1

[email protected] Mohammed Mahmoud 7

Color c = color.RED;

،WHITE، BLACK، YELLOW، GRAY، PINK، GREENلや ラやヲلヲヨجりキヲ أيヱ ゅツمن やأ

BLUE .ゅهゲغيヱ

2 ュやギガわسゅب .ュゅヌن ラやヲالやRGB (Red-Green-Blue،) るらنس ァゴتج مゅن ヲه ラヲكل ل ラأ ヴヤص عレي ヵグلやヱ

ゲヘダلや بين るらسレلや ログه ゥヱやゲわت ،ベケコأやヱ ゲツأخやヱ ゲヨأحや ラヲヤلや من るレمعيヱ222 لムل ラヲムわا يんヨف ،ラヲل ラヲヤلや

من やلヲヤنين やأخやヱ ゲツأヱ ،ベケコلグلك فラみ مヲムنや れゅلや ラヲヤأحゲヨ هي 0من やلや ラヲヤأحや222 ヱ ゲヨأحゲヨ من

(222.0.0 るらسレب るاثんلや ラやヲألや ァゴأبيض من مや ラヲヤلや جわレي るボيゲトلや سヘレبヱ )222 أبيضや ラヲヤلや ゴمケ ラヲムلي

( ヲ222.222.222ه ヲلي هゅボتゲらلや ラヲヤلや ゴمケ ラأ ギイنヱ .)(222020000) ログヰب るئيسゲلや ラやヲألや ゅレمやギガわاس

やلレسب لヤحメヲダ عや ヴヤلや ラヲヤلゲらتゅボلي ヱهヱ .やグムبゅلゅわلي يや ゅレレムヨلحメヲダ عヴヤ عキギ كらيゲ من やألラやヲ بヤわガヨف

ュゅヌن ュやギガわسゅب れゅجケギلやRGB ヱت .ュゅヌレلや やグه ゆヲسゅلحゅسم بゲلや مجやゲمن ب ゲيんムلや ュギガわس

Color c = new Color(128 , 20 , 64);

るゃヘلやFont:

るゃヘلや ゅنギعゅتسFont .るشゅゼلや ヴヤسم عゲلや ل خطムشヱ مイحヱ ネヲن ケゅيわخや ヴヤع Font font = new Font("Times New Roman" , Font.PLAIN , 20);

فるعヱゲمن やلや ヅヲトガلヨ نحァゅわ لんاثる معトيれゅ، أヱلや ゅヰسم やلガط やلヨسヱ ،ュギガわيムヨن أラ يラヲム أヵ خط ،Fontإنゅゼء

italicأヱ مゅئل plainنيゅ شムل やلガط، فيイب تحギيギ مやクま ゅ كや ラゅلガط عヵキゅ ، ثやゅلヨسや ュゅヌュギガわلゼわغيل やلヵグ ن في

ヱأخيやゲ يイب تحギيギ حイم خط やلゅわムبる. يヲضح ،ゅfontلク るゃヘلك بゅسや ュやギガわلやヲんبت やلヲヨجりキヲ بbold، ヱأヱ عゲيض

.るشゅゼلや ヴヤع れやケゅらسم عゲل るヘヤわガヨلや ヅヲトガلやヱ ラやヲألや ュやギガわسや ليゅわلや メゅんヨلや

import java.awt.*;

import javax.swing.*;

public class FontsAndColors extends JFrame

{

public FontsAndColors()

{

super("Fonts and Color");

setSize(300 , 400);

setVisible(true);

}

public void paint(Graphics g)

[email protected] Mohammed Mahmoud 8

{

Color color = Color.BLACK;

Font font = new Font("serif" , Font.PLAIN , 12);

g.setColor(color);

g.setFont(font);

g.drawString("TEST COLOR AND FONTS" , 20 , 50);

g.setColor(Color.RED);

g.setFont(new Font("monospaced" , Font.ITALIC,

16));

g.drawString("testing colors and fonts" , 20 ,

100);

g.setColor(new Color(200, 0, 100));

g.setFont(new Font("sans serif" , Font.BOLD, 20));

g.drawString("Testing colors and fonts" , 20 ,

200);

g.setColor(color);

g.setFont(new Font("times new roman" , Font.BOLD +

Font.ITALIC, 24));

g.drawString("Testing colors and fonts" , 20 ,

300);

}

public static void main(String args[])

{

new FontsAndColors();

}

}

るلやギلや ュギガわتسsetColor في りキヲجヲヨلや るゃヘلやGraphics سي ヵグلや ラヲヤلや ギيギحわل りグفゅレلや ヴヤسم عゲヤمه لやギガわسや مわ

لわحギيギ خゅダئص やلガط やلヵグ سゲヰヌわ به やلゅわムبsetFont .るسらボわل やلや ラヲヤلゆヲヤトヨ كヲسيط، كグلك تسや ュギガわلやギلヱ るت

ラヲムت ラأ るبゅわムヤن لムヨناحظ أنه يBold ヱItalic سゅلك بクヱ ،ゅع.معヨイلや るعام ュやギガわ

[email protected] Mohammed Mahmoud 9

مゲガجاや れلゲらنامج 2-1شムل

رسم ااشكاf الهندسية:

やلوسائط やلوظيるヘ اسم الدالة

Drawline(x1 , y1 , x2

, y2). やاحやギثي やلسيレي لるトボレ بやギيケ :x1 るسم خط مسボわيم

やلガط.

y1 るيゅヰن るトボレل ヵキゅダلや ثيやギاحや :

やلガط.

x2 るيゅヰن るトボレي لレلسيや ثيやギاحや :

やلガط.

y2: るيゅヰن るトボレل ヵキゅダلや ثيやギاحや

やلガط.

DrawRect(x , y , width

, height). FillRect(x , y , width

, height).

ケسم مسトわيل.

ケسم مسトわيل

مヤわヨئ.

X : يレااحداثي السيللレقطة العلヲية

اليسرン للمستطيل.

[email protected] Mohammed Mahmoud 10

Draw3DRect(x , y ,

width , height , b). Fill3DRect(x , y ,

width , height , b).

ケسم مسトわيل ثاثي

.キゅابعや

わヨيل مトわسم مسケヤ ئ

.キゅابعや ثاثي

Y : يキاダااحداثي الللレقطة العلヲية

اليسرン للمستطيل.Width : チعر

المستطيل.Height : ネتفاケا

المستطيل.B : ネヲレمتغير من ال

Booleanالمレطقي trueيأخグ القيمة

ليヰヌر المستطيل ヱمرتفع اFalse ستطيل ليヰヌر الم

مガレفض.

DrawOval(x , y , width

, height). FillOval(x , y , width

, height).

.ヵヱゅツل بيムسم شケ

ヵヱゅツل بيムسم شケ

مヤわヨئ.

X يレااحداثي السي :للレقطة العلヲية

اليسرン للمستطيل الグي يمس الشكل

الらيضاヱي.Y يキاダااحداثي ال :

للレقطة العلヲية اليسرン للمستطيل

الشكل الグي يمس الらيضاヱي.

Width الشكل チعر : الらيضاヱي.

[email protected] Mohammed Mahmoud 11

Height ネتفاケا : الشكل الらيضاヱي.

DrawArc(x , y , width

, height , start ,

angle). FillArc(x , y , width

, height , start ,

angle).

サヲسم قケ من

.りゲئやキ

ヵゲئやキ ネゅトسم قケ

مヤわヨئ.

X يレااحداثي السي :.りالدائر ゴلمرك

Yي : ااحキاダداثي ال.りالدائر ゴلمرك

Width.りالدائر チعر : Height ネتفاケا :

.りالدائر Start ية التيヱاゴال :مヰレا ケسم القサヲ يらدأ

(0 - 060.) Angle ي: قيمةヱاゴةال

( サヲالق ロاتجاヱ-060 (.060الي

メゅんヨلや.るسيギレヰلや メゅムاشや سمゲل メやヱギلや ログبعض من ه ュギガわلي يسゅわلや

import java.awt.*;

import javax.swing.*;

public class Shapes extends JFrame

{

public Shapes()

{

super("Shapes");

setSize(400,300);

setVisible(true);

}

public void paint(Graphics g)

{

g.setColor(Color.BLUE);

g.drawLine(10, 140, 400, 140);

g.drawLine(200, 30, 200, 300);

g.setColor(Color.RED);

g.drawOval(20, 60, 50, 50); // circle

[email protected] Mohammed Mahmoud 12

g.fillOval(90, 60, 100, 50);

g.setColor(Color.MAGENTA);

g.drawRect(15, 150, 100, 100); // square

g.fillRect(120, 150, 50, 100);

g.setColor(Color.CYAN);

g.draw3DRect(220, 150, 100, 100, false);

g.fill3DRect(330 , 150, 50, 100, true);

g.setColor(Color.BLACK);

g.drawArc(220, 60, 50, 50, 0, 360); // circle

g.fillArc(280, 60, 100, 50, 0, 90);

g.fillArc(280, 60, 100, 50, 270, -90);

}

public static void main(String args[ ])

{

new Shapes();

}

}

るلやギلや يقゲヅ ين: عنわボيゲトب りゲئやキ ゅレヨسケ ゅレأن メゅんヨلや やグناحظ في هDrawOval لك بクヱ ヵヱゅツل بيムسم شゲ

るلやギلや يقゲヅ عنヱ ،عهゅヘتケや ヵヱゅضه يسゲعDrawArc るيゴكゲヨلや هわيヱやコ ネゅトسم قケヱ060 るلやギلや مينギガわمس .

DrawArc るيヱやゴح بわヘيヱ ،ゲヘص るيヱやゴلや أ منギらي りゲئやキ ネゅトسم قゲب ゅレヨا 00، قや في ネゅトقヱ ،جبヲヨلや ロゅイت

るيヱやゴلや أ منギらي ゲآخ りゲئやキ270 るيヱやゴح بわヘيヱ00 るيヱやゴلや ギレع ネゅトボلや أギらي ヵلب، أゅلسや ロゅイاتや ي 270فيヰわレيヱ

るيヱやゴلや ギレ180ع.

مゲガجاや れلゲらنامج 3-1شムل

[email protected] Mohammed Mahmoud 13

メやヱキ ュやギガわسや るيヘكي メゅんヨلや やグه ゅレضح لヲي るゃヘلやGraphics ヨヌわレヨلや るسيギレヰلや メゅムأشや ينヲヤتヱ سمゲل ポゅレه .る

ラヲムわل るヤダわم ヅヲトخ ヵأヱ ュヲイレلやヱ るヘヤわガヨلや れゅعヤツヨلや لんم やギيボتع ゲんأكや メゅムأشや سمゲل ュギガわتس ンゲأخ メやヱキ

るلやギلや ュギガわتس .ゅボヤمغ ヱأ ゅحヲわヘا مムشdrawPolygon るفヲヘダل مらボわتسヱ ネأضاや りゲيんك るボヤغヨلや メゅムأشや سمゲل

るفヲヘダمヱ ،لムゼヤل るنヲムヨلや ヅゅボレلや يعヨイي لレلسيや ثيやギإحゅل ب るنヲムヨلや ヅゅボレلや يعヨイل ヵキゅダلや ثيやギإحゅب るنيゅل، ثムゼヤ

ثم عキギ هや ログلヅゅボレ. تや ュヲボلやギلる بヲわصيل やلヅゅボレ مع بعや ゅヰツلらعض بヅヲトガ مسボわيるヨ حسب تゲتيب やلヅゅボレ، ثم

るلやギلや ュギガわق، تسヤغヨلや لムゼلや ヴヤع メヲダحヤل ヴلヱأや مع りゲأخيや るトボレلや صلヱfillPolygon لءヨق لヤغヨلや لムゼلや

まpolylineا أや ラلـ やpolygonلـ ヱ ،polyline يらゼه やلـ draw P olylineين، هポゅレ أيや ゅツلやギلる بゅلや ラヲヤلヨع

هヲ شムل مゥヲわヘ أヵ أنه مヲヨイعる من やلや ヅゅボレلるヤダわヨ يらعゅヰツ عن ゲヅيق خヅヲト مسボわيヱ るヨتسらボわل やلやギلる كグلك

ي تュヲボ بみغاや ベلムゼل فمヲヘダفや るإحやギثي やلسيレي لヱ ヅゅボレヤمヲヘダفや るإحやギثي やلヵキゅダ لヱ ヅゅボレヤعキギهヱ ،ゅا

るلやギلや ュやギガわسや ليゅわلや メゅんヨلや ضحヲي ،るيゅヰレلやdrawPolygon ヱdrawPolyline.

import java.awt.*;

import javax.swing.*;

public class PolygonsAndPolylines extends JFrame

{

public PolygonsAndPolylines()

{

super("Polygons and Polylines");

setSize(300, 200);

setVisible(true);

}

public void paint(Graphics g)

{

int x1[] = {50, 125, 100, 75, 150};

int y1[] = {70, 200, 35, 200, 70};

g.setColor(Color.BLACK);

g.drawPolygon(x1, y1, 5); // star

int x2[] = {150, 240, 205, 140, 260};

int y2[] = {90, 200, 35, 200, 90};

g.setColor(Color.YELLOW);

g.fillPolygon(x2, y2, 6); // filled star

int x3[] = {50, 50, 125, 200, 200};

int y3[] = {400, 300, 350, 300, 400};

g.setColor(Color.RED);

g.drawPolyline(x3, y3, 7); // M

[email protected] Mohammed Mahmoud 14

}

public static void main(String args[ ])

{

new PolygonsAndPolylines();

}

}

やلゲガج من やلゲらنامج 4-1شムل

عن ゲヅيق polylineحيث ا يわم まغاや ベلムゼل عケ ギレسم ،やヱpolylineلـ polygonاحظ やلベゲヘ بين やلـ

.ヱpolygonصل やلや るトボレأخيりゲ مع やأヱلヴ كゅヨ في

わسゅلبや سم معゲلや メやヱキ ュやギガ ゲيらムلや キギع ،れゅحヲヤلやヱ れゅشゅゼلや فヤわガم مヨダت ラن أムヨي ،ゅفゅج ゅهゲفヲي تわلや ラやヲلأل

メやヱキ ュギガわتس るゃヘلやGraphics メゅムأشや سمゲل ゅヰليま ゅレقゲトي تわلや メやヱキ ギجヲتヱ ،りゲダわガヨلや ميمゅダわلやヱ るトسيらلや

أخンゲ تسュギガわ لゲسم ヱتヨダيم やلゅゼشや れゅلヨعりギボ مんل やسや ュやギガわلヤヌわيل やヱخわاف سヨك فゲشや りゅلゲسم ヱتヨダيم

لヱ や るゃヘحれやギ صغيりゲ يわم تケやゲムهゅ لヲヤわヤين بギا عن やسュやギガわ لやヱ ラヲحギ بسيط. جヨيع هや ログلヨヨيれやゴ مヲجりキヲ في

Graphics2D ينギعらسم بゲلや ヱأtow dimensional، لや れやヱキأや كل ヴヤع ヵヲわتحヱるمコسم اゲヤل.

واجهاQ المستخدg الرسومية:تعやヱ ゲらわجや るヰلヨسや ュギガわلゲسヲميる من أهم やأやヱ れやヱキأكや ゲんسやギガわمゅ في لغや れゅلゲらمるイ لヨイيع やلらトわيれゅボ، فヰي

や مع ュギガわسヨلや ملゅسط من تعらتヱ لヰمج تسゅنゲらヤل るميヲسケ るヰجやヱ يمヨダمج من تゲらヨلや نムヨتヲわمج. تحゅنゲらل ヵ

[email protected] Mohammed Mahmoud 15

أغヤب بやゲمج やلحゅسや ゆヲلわي نやゲهや ゅليュヲ عやヱ ヴヤجケ れゅヰسヲميヱ ،るهي أヵ شゅشる أヱ نゅفりグ نやゲهゅ عギレ تゼغيل

るヰجやヲلや ヵヲわتح ラن أムヨيヱ ،れゅشゅゼلや ヱأ れゅヰجやヲلや من キギع ヴヤع ギحやヲلや مجゅنゲらلや ヵヲわيح ギقヱ ،مج معينゅنゲب

や メゅلらيゅنヱ ،れゅيわم تヨダيم やلゲらنゅمج بحيث تゲヰヌ عヴヤ معヲヤمれゅ عن やلゲらنゅمج أヱ يムヨن أラ تحヵヲわ عヴヤ مるボトレ إキخ

كل خやヲトته ヱمعゅلわイه عや ヴヤلやヲجるヰ ليムヨわن やلヨسュギガわ من مゅわبعや るلゲらنゅمج بやケギيる تゅمラヱキヱ る مヤل. فヘダわヨح

りキギعわم ケやケコأ ヴヤع ヵヲわتحヱ ،ゆヲヤトヨلや ラやヲレلعや メゅخキみب ュギガわسヨヤح لヨتس るヰجやヱ ヴヤع ヵヲわنت يحゲわإنや

ゲヰヌي تわلや るボトレヨلやヱ ،れゅمやギガわاسや るحヘダلや يلヨتح るبعゅわمج مゲらヨヤن لムヨيヱ れゅجゲガヨلや るボトレهي م るحヘダلや ゅヰفي

.るحヘダلや لヘيل أسヨحわلや يطゲش るらقやゲヨب

やヱجるヰ مわصヘح やانゲわنت 5-1شムل

りゲيらك るعヲヨイم ゅفゅج るلغ ゲفヲت やヱ れゅゃヘلや من るميヲسゲلや れゅヰجやヲلや يمヨダわل メやヱギلュギガわسヨلや مج معやゲらلや علゅヘわل

やJFrameلるゃヘ في やلボسم やلسゅبق تعゲفゅレ عやjavax.swing. ヴヤلحゴمやjava.awt ヱ るلحゴمヱ るهي مヲجりキヲ في

ヰكيف أنヱゅ تヱ るشゅゼلや ヴヤع ゲヰヌتヰيヤع メゅムأشや يمヨダわمج بゲらヨヤح لヨسゅ .تュギガわس るゃヘلやJFrame يمヨダわل サゅسほك

ヰليま るヰجやヲلや れゅنヲムيع مヨف جゅツتヱ るميヲسゲلや ュギガわسヨلや れゅヰجやヱゅ ログأهم ه ヴヤسم عボلや やグه メف خاゲعわن ،

れゅنヲムヨلや .ュギガわسヨلや ゅヰمل معゅعわكيف يヱ ゅヰتゅمやギガわسやヱ

[email protected] Mohammed Mahmoud 16

やلや るゃヘلわي تسま ュギガわلヴ جゅنبやلれゅゃヘ من أهم やjava.awtلحゴمる في やりلヲヨجやContainer キヲلるゃヘ عゲらわت

JFrameヰわيヨن أهヨムتヱ ،ゅ ヰトبケ مわفي أنه يゅ ـ ( components) ثم تわم まضゅفる جヨيع مヲムنや れゅلゅレفJFrame りグبゅل

ヰليまゅ .

سュギガわ تي やヱわل やJLabelلるゃヘ نヲضح كيヘيま るعキやギ شゅشる تحヵヲわ عヴヤ عヱ れやケゅらصケヲ بゅسュやギガわفي やلや メゅんヨلゅわلي

لゅわムبる نص أケゅヰドま ヱ صケヲ عヴヤ نゅفや りグلゲらنゅمج.

import java.awt.*;

import javax.swing.*;

public class LabelTest extends JFrame

{

public LabelTest()

{

super ("Label Test");

Container container = getContentPane();

container.setLayout(new FlowLayout());

JLabel label1 = new JLabel("This is a label");

container.add(label1);

Icon image = new ImageIcon("Image.gif");

JLabel label2 = new JLabel(image);

container.add (label2);

JLabel label3 = new JLabel();

label3.setText("This is another label");

container.add(label3);

setSize (300, 150);

setVisible (true);

}

public static void main(String args[ ])

{

new LabelTest();

}

}

やلヵグ سゅツわف まليه やلヲムヨنれゅ فيゅヨ بعケヱ ギبcontainer ゅヰトبわحギيギ عや ラやヲレلゅレفりグ، ثم تعゲيف やلヲعゅء ゼヨيギ يギらأ やل

لやギلや る. يわم تحギيゲヅ ギيるボ تヌレيم やلヲムヨنれゅ عや ヴヤلゅレفりグ بやヲسgetContentPane るトبゅسや ュやギガわلやギلJFrame るبゅلـ

setLayout، れゅنヲムヨلや يفゲم تعわلك يク ギل. بعダヘلや るيゅヰفي ن るشゅゼلや يمヌレわل るヘヤわガヨلや ベゲトلや ヴヤف عゲعわレسヱ

لゅらトعる نص عや ヴヤلゅゼشやJLabel ،るلゅレヨسや るらلわي نゲغب في まضゅفま ゅヰわلや ヴلゅレفヱ .りグفي هや やグلメゅんヨ تم تعゲيف

بゅسヲ container ュやギガわعゅءيゅツف まلや ヴل ثم ゅJLabelلや るゃヘلソゅガ ب ゼヨيギحيث نュヲボ بゲヨわيゲ هや やグلレص まلや ヴل

[email protected] Mohammed Mahmoud 17

るلやギلやadd ュやギガわسゅا بヱأ ゅهゴيヰイわب ュヲボن ،るشゅゼلや ヴヤع りケヲص チゲلعヱ .reference من るゃヘلやIcon ヱئن منゅك

るゃヘلやImageIcon، ヤع ヵヲわيح ヵグلや فヤヨلや سمや ضيحヲلمع تや ءゅゼنま るヌلح るبヲヤトヨلや りケヲダلや ヴئنゅムفي ヲهヱ ،

ヵグ نヱ チゲわヘجロキヲ في نヘس やلヨسや ケゅلヵグ يヲجギ فيه هや やグلゲらنゅمج. بعギهゅ يわم やヱل image.gifهや やグلや メゅんヨلヤヨف

ヲعゅءまلや ヴل やJLabelلヵグ يحヵヲわ عや ヴヤلりケヲダ، ثم まضゅفや るلـ imageبゅسや ュやギガわلゅムئن まJLabelنゅゼء

container. لـや مイح ギيギم تحわي やゲأخيヱJFrame るلやギلや ュやギガわسゅبsetSize るヨيボلや ゲيゲヨيق تゲヅ ضه عنゲعヱ

true るلやギلや ヴلまsetVisible.

مゲガجاや れلゲらنامج 6-1شムل

ゅヰわトسやヲن بムヨي ベゲトلや من キギع ポゅレه ラأ メゅんヨلや م ناحظ منわء يゅゼنまlabels لや ュやギガわسや يقゲヅ عن れや ギيゼヨ

ポゅレヰف .るヘヤわガヨلや ギيゼل مらボわيس ゲآخヱ ،るشゅゼلや ヴヤع ゲヰヌلي ゅダل نらボわيس るنヲボيや るトسやヲب ゅヰضゲلعJLabel، لثゅثヱ

ヲصヱ ゅダل نらボわيسりケ ポゅレهヱ .ゅيف معゲعわل ケゅخيJLabel るلやギلや ュやギガわسゅبsetText ヱsetIcon ラاらボわين تسわヤلや

ヱ ゅダنるنヲボيや .ليやヲわلや ヴヤع

ギガمや るلヲسゅئل やلヨسま わحラヲムンギ يعヤيれゅヨ عヴヤ نゅفや りグلゲらنゅمج، ヱقギ عヲヨمゅ لゅわムبや るلعヱゅレين やヱلlabels わنسや ュギガわلـ

اسや メゅらボわلギヨخاれ من やلヨسュギガわ، فヰي تسヨح له text filedلعチゲ مゲガجや れゅلやゲらمج. يسュギガわ حボل やلレص

ヱ تيحゅヘヨلや るحヲل ュやギガわسゅب .ゅヰヤخやギب るヘヤわガヨلや ソヲダレلや るبゅわتكゲفヲ るゃヘلやJTextField ュギガわسヨلや بヅゅガت るنيゅムمま

مع やلゲらنゅمج، حيث يسヨح له بキみخや メゅلボيم やلるヘヤわガヨ ليわعゅمل معや ゅヰلゲらنゅمج. ヱقらل أラ نゥゲゼ بゲنゅمゅイ يわعゅمل مع

ゃヘلやるJTextField، فゲي تعわلやヱ ،ュギガわسヨلや من りケキゅダلや ゐやギأحや مج معゅنゲらلや علゅヘت るボيゲヅ ضحヲن ラأ ギيゲن

ゐやギأحや るイلゅعヨبEvent Handling. معين في ゐギل حヨبع ュギガわسヨلや ュヲボي ラهي أ ゐやギأحや لجゅفي مع りゲムヘلや

ヱف أゲح るعゅらヅ ヱأ ケコ るトل ضغんمج مゅنゲらلやلやغطツ ゥゅわヘヨلや ヴヤع Enter لや يكゲتح ヱأヘりケゅ ح ヵأ ヱأ ،ゲآخ ゐギ

キギفعل مح グيヘレわمج بゅنゲらلや ュヲボفيるبゅイわسや فعأゅメ :れゅنヲムم るثاث ゐやギأحや るイلゅمع るيヤヨلعヱ .ュギガわسヨلや

[email protected] Mohammed Mahmoud 18

1. ゐلحدや ケمصدevent source: ラヲムم ヵأ ラヲムي ラن أムヨيヱ مجゅنゲらلや りグفゅفي نゥゅわヘم ヱتيح أゅヘヨلや るحヲفي ل

ヱأ りケゅヘلや.

2. ゐلحدや كائنevent object: معين في ゐギهكل حレع ギلヲわي ヱأ ほゼレمج يゅنゲらلや ئنゅكやグحث هらي ،キギمح ムلや ئنゅ

るボトレヨلや ي عنわلや ゐギلحや لجゅعわمج سゅنゲらلや بفي ュヲボتヱるبゅイわاسゅ らسゅレヨلやゐギحヤل る .

0. るمعالج ゐلحدやevent hander: مجゅنゲらلや ء منゴج ヲهヱ るلやキ りキゅع ラヲムفي ي るلゅح ネゅヨわسや ئمやキ ネヲレل キギمح

ゅヰイلゅيع ゐやギأحや منるبゅイわاسゅب ュヲボيヱ لやعヨわسヨلゅب ゅツف أيゲلك يعグلヱ ،キギحヨ Listener.

ヱخاや メأمや るヤんلゅわليる نわعゲف عヴヤ هや ログأحま ゐやギلや ヴلわي تゲتらط بラヲムヨ بعيレه، やأحゐやギهゅレلك عりギ أنネやヲ من

ゅلجや نبれゅنヲムヨ components ヲه ゐやギأحや ログه メヱأ .ゅヰب るトらتゲヨلや ゐギلحやAction، ヵギحやヱ ロギلヲت ゆゅらأس

ゥゅわヘم ヴヤغط عツلや ギレع ヲهenter ラヲムي ゅمギレع キヲجヲم るبゅわムلや ゲشぽخل مやギبtext field. ゥゲゼلي يゅわلや メゅんヨلやヱ

クلك.

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class TextFieldTest extends JFrame

{

Handler handler = new Handler();

JTextField text;

public TextFieldTest()

{

super("TextField Test");

Container container = getContentPane();

container.setLayout( new FlowLayout());

container.add(new JLabel("Enter your name and

press enter"));

text = new JTextField(20);

text.addActionListener( handler );

container.add( text );

setSize(250, 100);

setVisible(true) ;

}

public static void main(String args [ ] )

{

new TextFieldTest();

}

}

[email protected] Mohammed Mahmoud 19

class Handler implements ActionListener

{

public void actionPerformed (ActionEvent event )

{

JOptionPane.showMessageDialog(null, "Hello " +

event.getActionCommand());

}

}

やjavax.swingلحゴمる في やりلヲヨجやJTextFiled キヲلるゃヘ منكゅئن عن ゲヅيق まنゅゼء textfieldيわم تعゲيف

メヲトلゅل 20 بや ヴلま هわفゅضま ءثمゅعヲ container るلやギلや ュやギガわسゅبadd ゐギلحや るイلゅمع ギيギم تحわي ラأ ギلك بعク ラヲムيヱ

event handler ヲهヱ ヱ るゃヘلや ئن منゅك るلゅفي حヱ .ゐギلحや ゐヱギح ギレع ゅئيゅボヤت グヘレわي سわلや るلやギلや ヴヤع ヵヲわيح ヵグلや

ゐヱギحevent ネヲمن نActionEvent るلやギلや グيヘレم تわيactionPerformed ヲت ギレع ゅئيゅボヤت ヅゲゼب ゐギلحや やグه ギل

منや やグلヨسヨわع يゲヌわレ تヲلや ギأحゐやギ أヵ تحギيギ أラ ه ،ラヲムヨ componentمسゅボら مع やلمعゅلج やلحゐギ أラ يわم ケبط

やグه ラヲムヨلや component، ュやギガわسゅلك بクヱ るلやギلやaddActionListener :りケゅらلعや

text.addActionListener( handler );

تゲヌわレ تヲلや ギلわي やギactionPerformedلや るلعや ヴヤلわي تحヵヲわ مわゼق من やhandlerلヨسゅム ヴヨئنعレي أや ラلت

ネヲレلや من ゐやギأحActionEvent لـや منJTextFiled ヴヨسヨلやtext. لや ラヲムليヱ ئنゅムヴヤع やケキゅق るイلゅمعゐギأح

ネヲレلや منActionEvent ラヲムي ラب أイيimplements るヰجやヲヤل ActionListener ヤع ヵヲわيح ラب أイيヱ ヴ

るلやギلや يفゲتعactionPerformed في りキヲجヲヨلや るヰجやヲلや ActionListener キヲجヲヨلやヱり هケヱギبゅ في るمゴلحや

java.awt.event لや سヘレب ラみف ،やグه ギبعヱ .るضحヲヨلや るボيゲト ئنゅムلゅب ソゅガلや ゐギلحや عヨわله مسゅفي ح ラヲムي

ネヲمن ن ゐギح ヵئم أやキ ネゅヨわسやActionEvent メや من ほゼレي text filed غツلや يقゲヅ عن ヴヤلط عや ゥゅわヘヨ

enter るلやギلや グيヘレم تわلك، يク ゐギح ゅم ヴわمヱ ،هヤخやギبactionPerformed .ゅئيゅボヤت

ゥゅわヘم ヴヤغط عツلや تم ゅヨヤكenter صレلや لボخل حやキ ゲشぽヨلや キヲجヱ فيtext るلやギلや グيヘレم تわيactionPerformed

やلりケキゅダ من やلゅムئن や ネヲレActionEventلكヨسヨわع لأحゐやギ من ゅأنه تم تعييやHandler، ヰレلや るゃヘلヲヨجりキヲ في

text. ギلヲわي ،ゐギلحや ゐヱギح ギレئن عゅلمن كや ネヲレActionEvent るلやギلや ヴلま لボわレيヱactionPerformed يわلや

るلやギلや خلやギب بわムن ゅレأن ヵأ .ゅヰتやヲトخ グيヘレم تわيactionPerformed ギレع ゅهグيヘレغب في تゲي نわلや れゅヨيヤعわلや

ヴヤغط عツلや ゥゅわヘヨلや enter صレلや لボخل حやキ من text. るلやギلや ュギガわمج نسゅنゲらلや やグفي هヱ

showMessageDialog لـ るبعゅわلや るゃヘヤJOptionPane في キヲجヲヨلやヱ るمゴلحやjavax.swing ュヲボهي تヱ ،

[email protected] Mohammed Mahmoud 20

やاسم やلي ضゅفるبゅإ Hello عりケゅらمラヲム من やل، هや やグلレص Stringبケ ケゅヰドみسゅلる عや ヴヤلゅゼشる تسゅヰヤらボわ كレص

بゅسや ュやギガわلやギلゅレevent る عヤيه من やلゅムئن やヱلヵグ حやtext ヤダلゆヲわムヨ بやギخل حボل やلレص

getActionCommand، خلやギب ゆヲわムヨلや صレلや ヴヤع メヲダحヤل ゅمヲヨع ュギガわي تسわلやヱ ラヲムヨلや component

عن بボيや るلゲらنゅمج، ヱهヲ ليس اコمゅ كる ゅヨمسヤボわفるゃ في やHandlerلヵグ حゐギ مレه やلحゐギ. ناحظ ヱجや キヲلヨسヨわع

.るمキゅボلや るヤんأمや في ンゲレس

مゲガجاや れلゲらنامج 7-1شムل

ケやケコاやButtons:

ケやケコأや مجゅنゲらلや في ゅمやギガわسやヱ るيヨأه ゲんأكや مجやゲらلや れゅنヲムمن مbuttons، مج لحثやゲらلや في ュギガわي تسヰف

ケゴلや ギイنت، نゲわإنや حヘダわا في مんم .るレمعي るيヤヨع るيやギらل ュギガわسヨلやBack ケゴلやヱ るボبゅلسや るحヘダلや ヴلま りキヲعヤل

Stop لやヱ ،يلヨحわلや قفヲل ケゴRefresh كلヱ قمケ ل كلんヨي ケコ ギイن るらسゅلحや るآلや مجゅنゲفي بヱ .يلヨحわلや りキゅإع

ギガわسヨلや يهヤغط عツي るレمعي るيヤヨغل لعゼم ヲه ケゴلや ラクま .るبيゅحس るيヤヨع .るيヤヨلعや グيヘレغب في تゲي ゅمギレع ュتュギガわس

るゃヘلやJButton سم عや ضعヱヱ ゅهぼゅゼنま مわي .りキギمح れゅيヤヨبع ュゅيボヤل るشゅゼلや ヴلま ケやケコأ るفゅإضヰيヤや ュやギガわسゅب ゅل ギيゼヨ

ヱلグلك ابギ من ،ActionEvent. عや ギレلツغط عケコ ヴヤ معين، يヲわلギ حゐギ من نヲ ネヲعゅءثم まضゅفま ゅヰわلや ヴل

ケゴلや ヴヤغط عツلや ギレع ゅهグيヘレت ゆヲヤトヨلや れやケゅらلعや るبゅわم كわلك يグلヱ .يهヤع キゲヤل ゐギلحや ゐヱギح ゲヌわレع يヨわمس キヲجヱ

るلやギلや خلやギبactionPerformed. ゅわلや メゅんヨلや ضحヲي.るヘヤわガئف مゅドヲب ュヲボت ケやケコأや من やキギلي ع

[email protected] Mohammed Mahmoud 21

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class ButtonTest extends JFrame implements

ActionListener

{

JPasswordField password;

JButton ok, clear, exit;

public ButtonTest()

{

super("Button Test");

Container c = getContentPane();

c.setLayout(new FlowLayout());

c.add(new JLabel("Enter Password"));

password = new JPasswordField(20);

c.add(password);

ok = new JButton("OK");

ok.addActionListener(this);

c.add(ok);

clear = new JButton("Clear");

clear.addActionListener(this);

c.add(clear);

exit = new JButton("Exit");

exit.addActionListener(this);

c.add(exit);

setSize(350, 100);

setVisible(true);

}

public void actionPerformed(ActionEvent event )

{

if (event.getSource() == exit)

System.exit(0);

else

if (event.getSource() == clear)

password.setText(" ");

else

{ // ok

if(password.getText().equals("Sudan"))

JOptionPane.showMessageDialog(this,

"Password is correct");

[email protected] Mohammed Mahmoud 22

else

JOptionPane.showMessageDialog(this, "Sorry..

wrong password");

}

}

public static void main(String args[])

{

new ButtonTest();

}

}

ケゴلや ヴヤغط عツلや ギレعexit، るلやギلや ュやギガわسゅمج بゅنゲらلや グيヘレء تゅヰنまヱ りグفゅレلや ベغاま مわيSystem.exit(). ギレعヱ

ケゴلや ヴヤغط عツلやclear صレلや لボح れゅيヲわخاء محま مわي text るلやギلや ュやギガわسゅبsetText() صレلや ゲヰヌي تわلや

ケゴلや ヴヤغط عツلや ギレص. عレلや لボفي ح ゅヰليま ロゲيゲヨم تわي ヵグلやok ،ュギガわسヨلや ゅヰヤخキي أわلや ゲلسや るヨヤم فحص كわي

クまヱ كゅنت غيク ゲلك تや ゲヰヌلゲسゅلpassword is correct، るتや ゲヰヌلゲسゅلやクまsudan る كゅنت やلるヨヤム هي

Sorry. Wrong password .

ラاحظ أJPasswordField ヲه るゃヘلや هらゼت るゃف JTextField ュギガわسヨلや هヤخやギب ゅヰعらトي يわلや فヱゲلحや ラا أま .

れゅنゅيらلやヱ ゲلسや れゅヨヤك メゅخキま ギレع ゆヲغゲم ゲأم ヲهヱ ،ュヲイل نムش ヴヤع るيヘガم ラヲムبل ت ،るشゅゼلや ヴヤع ゲヰヌا ت

るلやギلや سヘن ラأ ヵأ ،ギحやヱ عヨわمع مس るاثんلや ケやケコأや بطケ تم .るصゅガلやactionPerformed غطツلや ギレع グヘレわس

عヴヤ أヵ من やأヱ ،ケやケコلグلك يイب やلゲヘわيق بين やأケやケコ لヨعゲفる أيゅヰ تم やلツغط عヤيゅヰ ليわم تヘレيや キケ グلヘعل やلゅレヨسب.

るلやギلや ュギガわتسgetSource ل るبعゅわلや るゃヘヤActionEvent لや سمや ヴヤع メヲダحヤئنلゅム ヱأ ،ゐギلحや فيه ゐギح ヵグلや

لわヤعゲف عif ヴヤفي عgetSource れやケゅらه. في やلメゅんヨ أعاロ تم やسや ュやギガわلやギلや るسم やلや ケゴلヵグ تم やلツغط عヤي

ك تم やلゲらنゅمج やلゲئيسي، ヱلグل ゅ فるゃفي هや やグلメゅんヨ هヲ نヘسヰ هやلヨسヨわعるゃヘ م やلツغط عヤيه. احظ أや ラلやلや ケゴلヵグ ت

ヰأن ヴヤه عヘيゲتع るヰجやヲلや ュギガわتس ゅActionListener. ギガわسや ع تمヨわسヨلや مع ケやケコأや بطケ ギレعヱ ゲشぽヨلや ュや

this، لや ラئنأゅム グمن ه るゃヘلや ロ ヴヤع ヵヲわيح ヵグلや عヨわسヨلや سهヘن ヲهるلやギلや actionPerformed.

[email protected] Mohammed Mahmoud 23

やلゲガج من やلゲらنامج 8-1شムل

ケやケコأや ゲらわتعbuttons صレلや メヲボحヱtextfields ゅヰأن るيヨسゲلや れゅヰجやヲلや في るئيسـيゲلや れゅنヲムヨلや من أهم

ゲ تヲف やأخヨ.ンゲعゅلやヱ るイإخヱ ،ァやゲيムヨن أラ تسま ュギガわلヴ جゅنب やلヲムヨنれゅ تんヨل やأسサゅ في عヤヨيや るإキخやヱ メゅل

ベゲトわレي سわلや れゅنヲムヨلや من りゲيらك るعヲヨイم ゅفゅج ゲんاكや れゅنヲムヨヤل .るليゅわلや るヤんأمや メخا ゅمやギガわسやه ギأح ログ

ヱ ゲボهي مヲヨイعる من やلガيれやケゅ يや ュヲボلヨسュギガわ بキみخメゅ أحギهゅ بゅلradiobutton، レ خわيやケゅلヲムヨنれゅ هヲ أや ケやケコا

ギレا عんم ケやケコأや من ネヲレلや やグه ギイن ラن أムヨيヱ .ギحやヱ ケゅمن خي ゲんأك ケゅيـわخや نムヨا يヱ ،りケほヘلゅب ケゅيガلや ヴヤع

れゅنゅيـらب るレمعيـ りケゅヨわسや ملء ギレع ヱأ ،ュギボわمヱ سـطヲわمヱ むギわらبين م ケゅيわاخや ラヲムفي るـらعヤلや るبヲصع るجـケキ ケゅيわخや

.やグムهヱ ヴـんأن ヱأ ゲكク ゅمま ネヲレلや ケゅيـわخや مわي るـيダガشـゅفゅجـ ゲفヲت るゃヘلやJRadioButton لわ れやケゅيـガلや مع ュギガわس

やلるゃヘ سـヨح فيゅヰ بゅخわيケゅ أكゲん من خيـケゅ في نヘس やلヲقت. يわم تعゲيف عキギ من やلゅムئれゅレ منيやلわي ا

JRadioButton ئن منゅيف كゲم تعわيヱ ،りキヲجヲヨلや れやケゅيガلや キギبع るゃヘلやButtonGroup ـيعヨج るفゅضـまヱ

や ケゅيわاخや ケやケコヰليまゅ ضـحヲわل ケゅمن خيـ ゲんأك ケゅيـわخや نムヨا يヱ るعヲヨイヨلや سヘレل るبعゅت るفゅツヨلや ケやケコأや ログه ラأ

ギحやヱ من ケゅيـわخや مわي ゅمـギレع .ゅヰレبيradio button ي るعヲヨイـن مヨءمعين ضゅゼنや مわ من ゐギلحや ネヲレ

ItemEventع لヨわيسـ ヵグلや ئنゅムلや ラみلك فグلヱ ،ي ラب أイي ゐやギأحや من ネヲレلや やグヰ るヰجやヲلや ュギガわس

ItemListener، تヵヲわح るヰجやヲلや ログط هي هボف りギحやヱ るلやキ ヴヤعitemStateChanged، ゅヰヘيゲب تعイلي يゅわلゅبヱ

.ゅヰヤخやギب りキヲجヲヨلや れやケゅيガلや ـنヨض ゅレمعي やケゅخيـ ュギガわسヨلや ケゅـわガي ゅمـギレع ゅهグيヘレت ゆヲヤトヨلや れやケゅらلعや ضـعヱ مわيヱ

やلや メゅんヨلゅわلي يゼـク ゥゲلك.

[email protected] Mohammed Mahmoud 24

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class RadioButtonTest extends JFrame implements

ItemListener

{

JLabel text;

JRadioButton plain, bold, italic, capital, small;

ButtonGroup styleGroup , caseGroup;

public RadioButtonTest()

{

super("Radio Buttons");

Container c= getContentPane();

c.setLayout(new FlowLayout());

styleGroup = new ButtonGroup();

plain = new JRadioButton("Plain", true);

plain. addItemListener(this);

styleGroup.add(plain);

c.add(plain);

bold = new JRadioButton("Bold", false);

bold.addItemListener(this);

styleGroup.add(bold);

italic = new JRadioButton("italic", false);

italic.addItemListener(this);

styleGroup.add(italic);

c.add(italic);

caseGroup = new ButtonGroup();

capital = new JRadioButton("Capital", true);

capital.addItemListener(this);

caseGroup.add(capital);

c.add(capital);

small = new JRadioButton("small", false);

small.addItemListener(this);

caseGroup.add(small);

c.add(small);

text = new JLabel("Radio Buttons");

c.add(text);

setSize(180, 140);

setVisible(true);

}

[email protected] Mohammed Mahmoud 25

public void itemStateChanged(ItemEvent event)

{

if(event.getSource() == plain)

text.setFont(new Font("serif", Font.PLAIN,

14));

if (event.getSource() == bold)

text.setFont(new Font("serif", Font.BOLD, 14));

if (event.getSource() == italic)

text.setFont(new Font("serif", Font.ITALIC,

14));

if (event.getSource() == capital)

text.setText("RADIO BUTTONS");

if (event.getSource() == small)

text.setText("radio buttons");

}

public static void main(String args[])

{

new RadioButtonTest();

}

}

ケゅيわاخや ケやケコـع أヨم جわيbold ヱplain ヱitalic ـنヨض ヴヤع ギحやヱ ケゅخيـ ケゅيـわخや مわي يムل りギحやヱ るعヲヨイم

فわسsmall ヱcapital ュギガわحيث يわم تعギيل خط やلわムـゅبる بゅレء عヴヤ هや やグاخわيケゅ. أمや ゅأケやケコ بيや،ゅヰレأكゲん من

ケゅيـわخや حسـب りゲصـغي ヱأ りゲيらك ヴلま فヱゲلحや るلゅيل حヲحわل.ュギガわسヨلや بゅلسـや るعヲヨイヨلや سヘレل ゅヰわفゅضـま تم やクまヱ るボ

ギحやヱ ケゅمن خيـ ゲんأك ケゅيـわخや ـيعトわلن نسـ ゅـレأن ،るبゅـわムلや نب خطゅج ヴلま فヱゲلحや るلゅح ケゅـわガن ラــيع أトわلن نس

ギيギم تحわي ゅـヨك ،ケゴلや نبゅج ヴلま ロケヲヰヌغب بゲن ヵグلや صレلや ギيギحわب ケゅيـわاخや ケコ يفゲم تعわي ،るعヲヨイヨلや ـنヨض

يヨـんل やلガيや ケゅابやギわئـي، ヱيや ラヲムلや ケゴلヵグ يحヨـل trueي لヲヨイヨヤعる، فゅلや ケゴلヵグ يحヨـل やلボيヨـや るلガيـや ケゅابやギわئـ

るـヨيボلやfalse لヤヌم ゲغي.ゅئـيやギわبや ネヲレلや من ゐギح ギلヲわمعين، ي ケコ ケゅيـわخや ギレعItemEvent ءやギم نわلي يゅわلゅبヱ

るلやギلやitemStateChanged ،ゅئـيゅボヤت ヱ يقゲヘわلや مわيガヨلや ケやケコأや بين るلやギلや ュやギガわسゅب るヘヤわgetSource.

[email protected] Mohammed Mahmoud 26

やلゲガج من やلゲらنامج 9-1شムل

ゅفゅجـ ゲفヲت るゃヘلや JCheckBox قتاヲلや سヘفي ن ケゅمن خي ゲんكや ケゅيわهخらゼي تヰف ، るゃヘلや JRadioButton في

ュやギガわسや ギレا أنه عま ،ュやギガわاسやヱ لムـゼلやcheckbox ガن ラن أムヨليや في れやケゅيـガلや من やキギع ケゅـわقتヲ ギحやヲلや ،

や ネヲレلحゐギ من ゅわJCheckBoxلي ا نحァゅわ لボわسـيま ゅヰヨلヴ مヲヨイعれゅ، يヲわلギ عや ギレلツـغط عヱ ヴヤبゅل

ItemEvent .ゅـツأي

:やJList ヱJComboBoxلقوやئم

، JList ヱJComboBoxمن やأや れやヱキلゅヰمる لヨダわيم やلゼـゅشや れゅلやヲボئم، ヱتヲفゲ جـゅفゅ نヲعين من やلやヲボئم هي

ベゲトわن ゅヨヰレبي ゲيらムلや るらـゼヤل るらنسـヱ هيヱ ゅヨهやギحま ヴلま ゅレهJComboBox るيヘلي كيـゅわلや مجゅنゲらلや ضـحヲيヱ .

:ゅヰمل معゅعわلやヱ るヨئゅボلや يفゲتع

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class ComboBoxTest extends JFrame implements

ItemListener

{

JLabel codeLabel;

String[] countries = {"Egypt", "Jordan", "Saudi

Arabia", "Sudan", "United Arab Emirates"};

String[] codes = {"20", "962", "966", "249", "971"};

[email protected] Mohammed Mahmoud 27

JComboBox countryCodes;

public ComboBoxTest()

{

super("Combo Box Test");

Container c = getContentPane();

c.setLayout(new FlowLayout());

countryCodes = new JComboBox(countries);

countryCodes.setMaximumRowCount(3);

countryCodes.addItemListener(this);

c.add(countryCodes);

c.add(new JLabel("Telephone code is :"));

codeLabel = new JLabel();

c.add(codeLabel);

setSize(200, 100);

setVisible(true);

}

public void itemStateChanged(ItemEvent e)

{

int index = countryCodes.getSelectedIndex();

codeLabel.setText(codes[index]);

}

public static void main(String args[])

{

new ComboBoxTest();

}

}

countriesتسュギガわ في まنゅゼء やلゅボئヨـヱ ،るهي في هや やグلゲらنゅمج やلヲヘダヨفや String るلネヲレ يわم تعゲيف مヲヘダفる من

るـヨئゅボلや حわヘت ゅمـギレع .ゅヰحـわヘل るヨئゅボلや ヴヤع ゲボレلゅب るلヱキ ケゅيـわخゅح بヨتسـヱ ،るـヨئゅفي ق メヱキ ـسヨء خゅヨـع أسツحيث ت

ギガわسゅب ゅهギيギي تم تحわلやヱ ،ゲトأسـ るثاث ケやギボم ゅヰلヲヅ ラヲムي るلやギلや ュやsetMaximumRowCount ケゅيわخや ギレع .

ネヲمن ن ゐギح ギلヲわي るلヱキItemEvent るلやギلや ءやギم نわمن ثم يヱitemStateChanged ،ゅئـيゅボヤت ゲダレلعや るفゲعヨلヱ

るلやギلや ュギガわتس るヨئゅボلや من ロケゅيわخや تم ヵグلやgetSelectedIndex るـヨجـع قيゲي تわلやヱinteger تيبゲل تんヨت

ケゅيわخや تم ヵグلや ゲダレلعや ضـعヱ حيث تم ،るلヱギلや ゥゅわヘم チゲع るレمعي るلヱキ ケゅيـわخや ヴヤتب عゲわي メゅـんヨلや やグفي ه .ロ

るفヲヘダヨلや تيح فيゅヘヨلやcodes سهヘن ヲتيح هゅヘヨلや るفヲヘダفي م ゥゅわヘヨلや تيبゲت ラヲムي ヴわح るلヱギلや تيبゲس تヘレب

ケゅيわخや ギレا عんم .るـヨئゅボلや في メヱギلや تيبゲتSudan るلやギلや ギتعي るـヨئゅボلや منgetSelectedIndex るـヨيボلや0 ،

[email protected] Mohammed Mahmoud 28

codeLableبゅسcodes ュやギガわفي やلヲヘダヨفヱ0 るيわم عや チゲلعケ ゲダレقم やلゅボئヨـる،في ヱSudanهヲ تゲتيب

ヲهヱ240 لんヨي ヵグلやヱ .ラやキヲلسや ゥゅわヘم

مゲガجاや れلゲらنامج 11-1شムل

ネヲمن ن るヨئゅボلや بين ベゲヘلや نヨムيJComboBox ネヲمن ن るـヨئゅボلやヱJList ラفي أJComboBox ゲボレلや مわي

ヤع ネヲレلや من るـヨئゅボلや ゅヨレبي ،やキギイق مヤثم تغ ゲダレع ケゅيـわاخ ゅヰحわفヱ ゅヰيJList ゲヰヌتヱ ،ゅヨئやキ るحヲわヘم るヨئゅهي ق

ネヲمن ن るヨئゅボلや حヨلك تسグك .るشゅゼلや عل ゅهゲصゅレعJList ゅهキやギعま تم やクま りギحやヲلや りゲヨلや في ゲصゅレع りギع ケゅيـわخゅب

.ヨJComboBoxـる من نネヲ بيゅヨレ ا يムヨن やخわيケゅ أكゲん من عゲダレ من عゅレصや ゲلゅボئ لグلك،

تヲفゲ جゅفゅ مヲヨイعる كらيりゲ من やأや れやヱキلヨسギガわمـる لレわسـيق やلゼـゅشキヱ れゅعم عヤヨيや れゅإキخやヱ メゅإخァやゲ في

عヴヤ مギらأ تعゲيف まヱعや キやギأりやキ اسやギガわمゅヰ، ثم やنや ケゅヌわلヨسュギガわ ليわعゅمل معゅヰ، ثم ヱتュヲボ جヨـيعや ゅヰلゲらنゅمج.

や ネヲن るفゲيق معゲヅ له عنゅأفع るبゅـイわاسや れやヱキأや ログمن هヱ .るレعيـヨلや りやキأや مل معゅعわلや تج عنゅレلや ゐギلح

ソヲダレلや れゅحـゅمسـJTextArea るـヨئゅボلや ゅـツأي ポゅレه .るشゅـゼلや ヴヤع ケヲトلسや من キギع るعゅらـトح بヨي تسـわلやヱ

るئـيسيゲلやJMenu ュやギガわسゅب メヱやギイلや مل معゅعわلや لكグن كムヨي .れゅشゅـゼヤل るئـيسـيゲلや ئمやヲボلや ءゅゼإنJTable

るفゅضま .ゅهゲكグل ュゅـボヨلや سـعわي ا يわلやヱ るヘヤわガヨلや れやヱキأや من ゲيんムلや ヴلま

やゲيんك るトسـやヲب ゅヰم بムحわلや غب فيゲن ゐやギأح ポゅレه ラأ ヵتيح أゅヘヨلや るحـヲمع ل れゅشゅـゼلやヱ مجやゲらلや علゅヘわت ゅم

る جゅفゅ غغط عヴヤ أヵ مヘـゥゅわ(. في للヲحـや るلゅヘヨتيح. فんヨا ناحظ في كんيゲ من やلやゲらمج やلعりケゅら: )لゅわヨヤبعや るضـ

حヵヲわ عヴヤ ثاメやヱキ ゐ هي: تتيح، ヱلゅわヨبعる مギخـاれ لヲحـや るلやKeyListener ゅヘヨلやヲجるヰ سュギガわت

[email protected] Mohammed Mahmoud 29

1. KeyPressed: تيحゅヘヨلや るحヲفي ل ゥゅわヘم ヵأ ヴヤـغط عツلや ギレع ゅئـيゅボヤت ゅهぼやギم نわـل:يん2 م، ALT، Enter،

A، .ゅهゲغيヱ *

2. keyTyped: ゅボヤت ゅهぼやギم نわيヱゅわヘم ヵأ ヴヤـغط عツلや ギレع ゅيئـي ゥ :ـلんم るشゅـゼلや ヴヤع ゲヰヌS، *, 2، A

.ゅهゲغيヱ

0. keyRelased: ヴヤـغط عツلや ءゅヰنま ギレع ゅئـيゅボヤت ゅهぼやギم نわيヱ ـغطツلや ギكـه بعゲت ヱأ ゥゅわヘヨلや.يهヤع

يわم تعゲيف هや ログلメやヱギ حラまヱ ヴわ لم نゲغب في やسやギガわمゅヰ جヨـيعヱ ،ゅيイب أラ يわم تسـイـيل やلعや ゲダレلヨعيـن

るلやギلや るـトسـやヲبaddKeyListener .ゲダレلعや لكク من ゐギي تحわلや تيحゅヘヨلや るحـヲل ゐやギمع أح メやヱギلや علゅヘわわل

.メやヱギلや ログمل مع هゅعわلや るيヘلي كـيゅわلや メゅـんヨلや ضـحヲي

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class KeyboardApplication extends JFrame

implements KeyListener

{

JTextField text;

public KeyboardApplication()

{

Container c= getContentPane();

c.setLayout(new FlowLayout());

c.add(new JLabel("Press a key"));

text = new JTextField(10);

text.addKeyListener(this);

c.add(text);

setSize(200, 100);

setVisible(true);

}

public void keyTyped(KeyEvent e)

{

JOptionPane.showMessageDialog(this, "you typed: "

+ e.getKeyChar());

}

public void keyPressed(KeyEvent e)

{

JOptionPane.showMessageDialog (this, "You pressed:

" + e.getKeyText(e.getKeyCode()));

}

[email protected] Mohammed Mahmoud 30

public void keyReleased(KeyEvent e)

{

JOptionPane.showMessageDialog(this , "You

released: " + e.getKeyText(e.getKeyCode()));

}

public static void main(String args[])

{

new KeyboardApplication();

}

}

ンギل るゃヘلやKeyEvent أや عل معゅヘわヤل ュギガわتس メやヱキ りギع りケキゅダلや ゐやギمح るلやギلや ュギガわتيح. تسゅヘヨلや るحـヲن ل

getKeyChar فゲبح ゅصゅخـ ゥゅわヘヨلや ラヲムي ゅمـギレلك عクヱ ،حـهゅわヘم ヴヤـغط عツلや تم ヵグلや فゲلحや ヴヤع メヲダحヤل

أヱ غيゲهF1 ،ゅأShift ヱمんل ヱغيゲهヱ .ゅعや ギレلツـغط عや ヴヤلゅヘヨتيح やأخヱw ンゲ 0يヌـゲヰ عや ヴヤلゼـゅشる مـんل

るلやギلや ュやギガわسや مわيgetKeyCode やグヰل لんヨヨلや ヵキギلعや ゴمゲلや ヴヤع メヲダحヤل،ゥゅわヘヨلや ヴلま ゴمゲلや やグيل هヲثم تح

るلやギلや ュやギガわسゅنص بgetKeyText .るشゅـゼلや ヴヤه عわعゅらـヅ من ثمヱ ،ゴمゲلや やグل هらボわي تسわلやヱ

مゲガجاや れلゲらنامج 11-1شムل

أラ لغる جـゅفゅ تギعم بゲمイـや るلトわـらيや れゅボلわي تゅヘわعل مع مギخـاれ لヲحـや るلゅヘヨتيح. تヲفゲ يヲضح هや やグلゲらنゅمج كـيف

りケほヘلや عن ケギダي تわلや ゐやギأحや مج معやゲらلや علゅヘわل ゅقゲヅ لكグك ゅفゅجـmouse りケほヘلや ケコ ヴヤـغط عツلや لんم

[email protected] Mohammed Mahmoud 31

やヲヤجメやヱ るヰ تゅبعる لレه. ヱكゅヰヤ عりケゅら عن や(キلゲボレ( أヱ تゲكه، キヱخや メヲلま りケゅヘلヴ مトレـるボ معـيـるレ أヱ خヱゲجـゅヰ م

MouseListener ヱ るヰجやヲلやMouseMotionListener .りケほヘلや れゅكゲعل مع حゅヘわヤل ゅヰمやギガわسや نムヨي

:やPanelلوعاء

ヲムنれゅ بやギخـヤه ヱمن ثم ヱهヲ عりケゅら عن ヱعـゅء يムヨن أラ يحヵヲわ عヴヤ عキギ من やلPanel ヨهポゅレ أيゅツ مや ュヲヰヘلـ

ヤه لわفゅضـまءゅعヲ container لやئيسيゲ مゅنゲらلや りグفゅレء لゅـゼنま مわيヱ ،جpanel ュやギガわسゅب るゃヘلやJPanel ـنヨムتヱ

ヰわيヨأهゅ تيبゲل في تらقـヱ .りグفゅレلや خـلやキ れゅنـヲムヨلや سـيقレتヱ تيبゲわヤل るـヘヤわガم ベゲヅ ュやギガわسやヱ ،りグفゅレلや れゅنـヲムم

ュやギガわسや ضـحヲن ラأ るゃヘلやJPanel れゅنـヲムヨلや ـيمヌレتヱ يمヨـダわل るمـギガわسヨلや ベゲトلや بعض ュギボن ラأ ギيゲن ،メゅـんفي م

هポゅレ عキギ كらيゲ من やلや ベゲトلわي يムヨن بゅヰ تヌレيـم ヱعチゲ مヲムنـや れゅلゼـゅشヱ るنメヱゅレわ هやLayout. ゅレلゅレفやキ りグخل

أشゲヰ ثاヱ ベゲヅ ゐهي:

Flow Layout: ئヤわヨت ヴわم به، حヰわفゅضま تヨت ヵグلや تيبゲわلゅب るشゅـゼلや خلやキ れゅنـヲムヨلや ضـعヲب ュヲボي ヲهヱ

れゅنـヲムヨلや ضـعヱ るبعゅわヨب ュヲボي ゅヰレحيヱ ،ゅضـيゲع りグفゅレلや .やグムهヱ ليゅわلや ゲトلسや في

Border Layout: ،るحゅمسـ ゲらص له أكダガي ヵグلや سـطヲلや :هيヱ ءやゴأج るسヨخ ヴلま るشゅـゼلや سـمボيヱ

まضゅفま るلや ヴلやヱ ベゲゼلغやヱ ゆゲلヨゼـやヱ メゅلヱ ،ゆヲレイيイب تحギيや ギلボسـم やلヵグ نゲغب في まضゅفや るلعま ゲダレليه

るفゅإضや りケゅらفي عadd .

Grid Layout: ヴلま りグفゅレلや سـمボي ヲهヱ ゅヰلヲヅ( ゅهキギع キギم يحイلحや るيヱゅسـわم れゅنゅガلや من るムらشـ

ヱعゲضـや )ゅヰلゲらヨمج. يわم まضـゅفる أメヱ عま ゲダレلや ヴلゅガنる أعヴヤ شヨـや メゅلゅレفヱ ،りグتやヲわصل まضゅفや るلعゅレصゲ من

.やグムهヱ نيゅんلや ـفダلや ヴلま メゅボわانや مわئ، ليヤわヨي ヴわح メヱأや ـفダلゅين بヨليや ヴلま メゅヨـゼلや

やلゲらنامج طベゲ تنظيم نافりグ أشゲヰ 12-1شムل

[email protected] Mohammed Mahmoud 32

るボيـゲヅ ュやギガわسや تم るボبゅلسـや るヤـんأمや ـيعヨيم في جヌレわلや Flow Layout مج، حيثゅنゲらヤل りグفゅレلや れゅنヲムـيم مヌレわل

レكل ع グخほيヱ ،ه بهわفゅضـま تヨت ヵグلや تيبゲわلや سヘレب ゲヰヌتキゅلعや ـهヨイح ゲـダュギガわنس るليゅわلや るヤんأمや メخا .ヵ

るボيゲヅBorder Layout ヱGrid Layout م فيムحわヤللやـゼ ュやギガわسや نبゅج ヴلま مجゅنゲらلや りグفゅレئي لゅヰレلや لム

في نヘس やلゅレفLayouts .りグلわヤعゅمل مع عやJPanel りギلヲعゅء

import java.awt.*;

import javax.swing.*;

public class GridLayoutTest extends JFrame

{

JButton b[];

public GridLayoutTest()

{

super("Testing grid layout");

Container c = getContentPane();

c.setLayout(new GridLayout(4,4));

b = new JButton[16];

for (int i = 0; i <16; i ++)

{

b[i] = new JButton(String.valueOf(i));

c.add(b[i]);

}

setSize(300, 300);

setVisible (true);

}

public static void main(String args[])

{

new GridLayoutTest();

}

}

るボヤح ュやギガわسや تم メゅـんヨلや やグفي هfor ヲه ケコ كل ベヲف ゲヰـヌي ヵグلや صレلや ラま حيث ،ゅヰわفゅضまヱ ケやケコأや ءゅゼإن

るشゅـゼلや يمヨダتم ت ゅヨنまヱ るレمعيـ るヘـيドヱ ゅヰليس ل ケやケコأや ログه ラاحظ أ .るفヲヘダヨلや في ケゴلや لكク تيبゲعن ت りケゅらع

ヱFlowمケゅボنゅヰわ بゲトيGrid Layout るボبغチゲ تヲضـيح شـムل نゅفや りグلゲらنゅمج عや ギレسゲヅ ュやギガわيや るボلヨダわيم

Layout.

[email protected] Mohammed Mahmoud 33

مゲガجاや れلゲらنامج 13-1شムل import java.awt.*;

import javax.swing.*;

public class BorderLayoutTest extends JFrame

{

JLabel title, nameLabel, passwordLabel;

JTextField name, password;

JButton signUp, login, clear, exit;

JPanel textPanel, buttonPanel;

public BorderLayoutTest()

{

super("Testing Border Layout");

Container c = getContentPane();

c.setLayout(new BorderLayout());

title = new JLabel ("Login page");

c.add(title, BorderLayout.NORTH);

nameLabel = new JLabel("Name");

passwordLabel = new JLabel("Password");

name = new JTextField(20);

password = new JTextField(20);

textPanel = new JPanel();

textPanel.setLayout(new FlowLayout());

textPanel.add(nameLabel);

textPanel.add(name);

[email protected] Mohammed Mahmoud 34

textPanel.add(passwordLabel);

textPanel.add(password);

c.add(textPanel, BorderLayout.CENTER);

signUp = new JButton("Sign Up");

login = new JButton ("Login");

clear = new JButton("Clear");

exit = new JButton("Exit");

buttonPanel = new JPanel();

buttonPanel.setLayout(new GridLayout(1, 4));

buttonPanel.add(signUp);

buttonPanel.add(login);

buttonPanel.add(clear);

buttonPanel.add(exit);

c.add(buttonPanel, BorderLayout.SOUTH);

setSize(320, 150);

setVisible(true);

}

public static void main(String args[])

{

new BorderLayoutTest();

}

}

ュやギガわسゅمج بゅنゲらلや りグفゅيم نヨـダمج تم تゅنゲらلや やグفي هBorder Layout، るفゅضـま اヱتم أヱJLabel るボـトレヨلや ヴلま

ゲصゅـレع るـسヨخ るفゅضـみح بヨلي يسـゅわلゅبヱ ،طボـق فヅゅـレـس مヨلـه خ ネヲレلや やグه ラみم فヤنع ゅـヨكヱ ،るشゅـゼلゅب るليゅヨـゼلや

هレـポゅ أケبـعる أケやケコ نゲغب في まضـゅفゅヰわ جヨـيعゅ بゆヲレイ فボط. لムـن やلゲらنـゅمج يحヵヲわ عヴヤ مヲムنれゅ كんـيりゲ، فんヨا

ヴلま ゅـيعヨم جヰヘـيツلك نグلヱ ،りグفゅレلやJPanel メゅんヨلや やグفي ه( るらسـゅـレヨلや るـボيゲـトلゅـم بヌレمGrid Layout) فيヱ ،

تラヲム مسـるヤボわ تゅヨمゅ عن JPanelجや ゆヲレلゅレفヱ .りグناحـظ أゲヅ ラيボـる تヨダيم やلـ やJPanelلゅヰレيـる يツـゅف やلـ

ゲトلや فゲنع るボيゲトلや ـسヘレب .るسـيゅأسـや りグفゅレلや في るمـギガわسヨلや るボيJPanel るボيゲトه بヨヨـダنヱFlow Layout

ـ ـ ヱJLabelsنツـيف やل ـ やヱTextFiledsل やヱJPanelلわي نゲغب بみضـゅفゅヰわ في ヱسـط やلゅレفヱ ،りグأخيやゲ نツـيف やل

بゅسュやギガわ ثやヲبت Border Layoutيヲفـゲهま ゅلヱ ヴسـط やلゅレفりグ. ناحـظ أنه يわم تحギيギ أقسـや ュゅلゅレفや りグلヨガـسや るلわي

.ヱCENTER، WEST، EAST، SOUTH،NORTHهي class BorderLayoutمヲجـりキヲ في

[email protected] Mohammed Mahmoud 35

مゲガجاや れلゲらنامج 14-1شムل

اسベゲヅ ュやギガわ تダـヨيم مるヘヤわガ عن やلわي تم やسやギガわمゅヰ مع نゅفゅ JPanel りグلヲعゅءفي やأمんـや るヤلسـゅبや るボسわعゅレ بأيゅツ لダヘـل تレسيق بعض やلعゅレصـゲ عن بボيـる عゅレصJPanels ゲن أラ تسや ュギガわلـ やلゲらنゅمج やأسـゅسـيる. يムヨـ

ゲصـゅレلعや بين れゅفゅسـヨلやヱ るبゅـわムヤل ュギガわسヨلや طガلや れゅヘصـやヲمヱ るيـヘヤガلや ラヲسـيق لレわلや やグه るヤـんمن أمヱ ،るشゅـゼلや .りキギحヨلや るボـトレヨلや خلやキ

ゅヰレمヱ ،مجやゲらلや れゅشゅيم شـヨـダわل ンゲأخ ゅقゲヅ ゅفゅجـ ゲفヲتGridBagLayout ヱCardLayout ヱBoxLayout キギا نح ゅمـギレمـه. عやギガわسや るボيゲヅヱ ュゅلعや هヤムشـ ゅヰレل مムلヱlayout ضـهやゲわفや مわي ،りグفゅレヤمعين ل

BorderLayout ヵأ るضـيやゲわافや يمヨダわلや るボيゲـヅ ヲهヱJFrame، ヵأ るضـيやゲわإفや يمヨダわلや るボيゲヅ ゅヨレبيJApplet هيFlowLayout مجやゲらلや ـن في بعـضムヨيم يヨダわلや ネヲن ギيギتحnull るلやギلや ュやギガわسや ギレع

setLayout れゅنـヲムم るفゅضـま كنゅأمـ ギيギن تحムヨي ゅヨنまヱ ،るボيゲヅ ヵほمج بゅنゲらلや りグفゅسـيم نボم تわلن ي ゅهギレعヱ ، るلやギلや ュやギガわسゅب りグفゅレلやsetBounds るيـやギب るトـボレل ヵキゅـダلやヱ يレلسـيや ثيやギإحや لらボわحيث تس ،ゲصـゅレلعや لムل

ゅヨلي やأعヴヤ من やلعダレـヱ メヲヅヱ ،ゲعや チゲلعヱ .ゲダレيعや ゲらわسュやギガわ هや ログلゲトيـるボ صـعケ ゅらسـم やلゲكـن やلゼـ ゅヰتギي أعわلや ベゲトلや عن りキゅع ァゲガمج ا تゅنゲب ヵأ りグفゅيم نヨダت ラأ ،りケヱゲـツヤا لま ليهま ءヲイヤلや مわا يヱ やギボمعヱ

んلやヱ メやヱギلや مل معゅعわلや مわمج، فيゲらヨلや ヴヤيل عヰسـわヤل ゅـボらمس ゅفゅجـ るلغـ ゅヰتほهـيヱギヰأقل جـヱ قتヱ قلほبت بやヲ.

[email protected] Mohammed Mahmoud 36

Qالفصل الثاني: تطبيقاApplets

من ヱやلヲيれゅ كゅنت لグلكヱتらトيゅボته، ゅイفゅ في بやギيや るلわسعيれゅレ مع やヱ ケヲヰドنや ケゅゼわإنゲわنتやللغる تやゴمن تヨダيم

من خゅダئص هや ログلヤغる مムヨن ほكゲら قケギ بヱمحヱゅلや るاسりキゅヘわ مヲヨヨダ لغや るلゅイفゅ بゲمるイ صヘحや れゅانゲわنت،

عن بゅقي やلヤغれゅ عゅليや るلヨسンヲわ. ي تらトيや れゅボإنゲわنت. مゅヨ ميゴهやゅلギイيりギ ف

ゅفゅج れゅボيらトわب るضيゅヨلや メヲダヘلや メخا ゅヰわبゅわت كヨي تわلや مجやゲらلや يعヨج ヴヨتسjava applications، ゅهم مやヱ

るئيسيゲلや るلやギلや ギレع ゅهグيヘレت るيやギب ヲه ゅهゴيヨيmain. るヨمائ ラヲムي تムل ゅفゅمج جやゲب るبゅわムل ンゲأخ るボيゲヅ ギجヲت

れゅイヨيゲらلや ヴヨتسヱ ،نتゲわإنや れゅحヘص ヴヤغيل عゼわلやヱ يلヨحわヤلapplets. لـــやapplet هヲ ゆヲわムم ゅفゅمج جゅنゲب

るレمعي りケヲダخل بやキ ينヨツわヤبا لゅه قヤعイتれゅحヘص (Hyper Text Markup Language)ـHTML هيヱ

るイمゲらل るمギガわسヨلや れゅغヤلや لヰأسヱ ゲヰأش ンギحま ギレنت. عゲわإنや れゅحヘصるحヘح صわف HTML مわلـــ يや يلヨتح

applet メヱやギل تヰيسヱ ゅفゅج るلغ ゅيやゴيع مヨمن ج りキゅヘわاسや نت منゲわإنや نムヨي ゅヨم ،ゅヰヤغيゼتヱ るحヘダلや ヴヤع

キギبين ع ゅفゅمج جやゲب ケゅゼわنやヱゲيらمين. كギガわسヨلや من

れゅイヨيゲらلや るトسやヲب るイمゲらلや فヤわガا تapplets ت ゅヨهعレع ゅレثギح ゅفゅج るلغ ソやヲس خヘレع بわヨわي تヰف ،ラآや ヴわح

أラ تحヵヲわ عヴヤ معヌم مゅ تヲفや ロゲلヤغる من تレボيれゅ. يほتي やلベゲヘ بين やلゲらيやヱ れゅイヨلやゲらمج やلヤボわيギيる في ゲヅيヱ るボيムヨن

ل やヱلゼわغيل عヴヤ صヘحや れゅإنゲわنت. やلヘレわيやヱ グلや れゅヘダإضゅفيや るلわي تわヨわع بゅヰ لヲムنゅヰ معりギ لわヤحヨي

ヱ ログه ،や JAppletلゅダ るゃヘئصختや ゐゲلや るゃヘلわي يわم تعゲيゅヰヘ يイب أapplet، ラلムي يヤトق عヴヤ بゲنゅمج معين

るゃヘلや キヲجヲمり في るمゴلحやjavax.swing ヴヤع ヵヲわتح るゃヘلや ログبع. هケأ ヱ るレئف معيゅドヱ ヵキぽت メやヱキ りキゅعま نムヨي

ゅ.ゅヰتهや ログلやヱ メやヱギسやギガわمやسゅヨء تعゲيゅヰヘ بやギخل やلゲらنゅمج. فيゅヨ يヤي

るلやلدやinit():

グيヘレم تわي るلやキ メヱمج، حيث ا هي أゅنゲらلや في ゅئيゅボヤت ゅيهヵヲわل حや ـapplet ヴヤع ギيゼم ヱأるلやキ るئيسيケmain.

ュギガわلتسや يفゲعわلれゅレئゅム や يمボلや ضعヱヱ ،مجゅنゲらلや ゅヰجゅわي يحわلや.ゅهゲغيヱ るشゅゼلや キやギعまヱ るئيやギわاب

るلやلدやstart():

るلやギلや ギبع ゅئيゅボヤت ゅهグيヘレأ تギらيinit() ،لや れゅヨيヤعわلや ヴヤع ヵヲわتحヱるمコا ロキやギعま تم ヵグلや مجゅنゲらلや غيلゼわل ロゴيヰイتヱ るلやギلや فيinit()، ヵヲわي تحわلや نتゲわإنや るحヘمن ص ュギガわسヨلや لボわنや やクま ゅツأي ゅهぼやギن ケゲムわي ゅヨك .لりゲわヘ ثم عま キゅليゅヰ مりゲ أخまlink ンゲلヴ صヘحる أخンゲ عن ゲヅيق やケبط appletعや ヴヤلـ

[email protected] Mohammed Mahmoud 37

るلやلدやpaint():

ヵグلや ュやギガわاسや سヘن ゅヰلヱロゅنゲكク لや لفيダヘ يعヨج ヴلま メヲصヲヤل ュギガわبق، حيث تسゅلسやヱキ メلやるゃヘ Graphics

إعや キやギلゲسやヱ ュヲألラやヲ عや ヴヤلゅゼشる. يわم نやギء هや ログلやギلる تゅボヤئيゅ بعや ギلやギلやjava.awt るلحゴمや るلヲヨجりキヲ في

start(). るلやلدやstop():

يわم تヘレيグ مゅ بやギخل هや ログلやギلやクま る كラゅ هポゅレ مゅ نゲيま ギيゅボف في やلヘダحlink ،るعギレمゅ يツغط やلヨسュギガわ عやケ ヴヤبط

مりゲ أخンゲ. مんا أラ نヲقف تゼغيل مヤف صれヲ عや ギレانapplet メゅボわ ين عや りキヲلヨسま ュギガわلヴ صヘحや るلـتゼغيヤه لح

るلやギلや يقゲヅ عن るحヘダلや ヴلま ュギガわسヨلや りキヲع ギレه عヤغيゼصل تやヲنヱ ンゲأخ るحヘص ヴلま start(). るلやلدやdestroy():

نゅヰئيゅ، مんل まغاや ベلヱ applet れゅヘヤヨنわムب بやギخゅヰヤ مゅ نゲيギ تヘレيログ عま ギレغاや ベلヘダحる، أヵ عギレ تヲقف عヨل やلـ

.ロゲغيヱ مجゅنゲらلや ゅヰحわヘب ュゅي قわلや

هや ラapplet ヲلغチゲ من やلـــ إクلك や JFrame، ヱلるゃヘ عヴヤ جヨيع خゅダئص るゃヘ applet メやヱキヱتحや ヵヲわل

ケヲヰド れゅボيらトわلや ラヲムت ラأ るヨヨダي مヰلك فグنت، لゲわإنや るحヘص ヴヤعJFrame، やグهヱمن أكس ゲيんムلや ゅヰら

メやヱギلやヱ ئصゅダガلや، لـــ メゅんي مヤي ゅヨفيapplet :るトنت بسيゲわنや るحヘفي ص ゅヰレيヨツتヱ ゅヰわヨجゲت るيヘيムل ゥゲشヱ

import javax.swing.*;

import java.awt.*;

public class DrawingApplet extends JApplet

{

int radius = 100;

public void start ()

{

String s = JOptionPane.showInputDialog(this, "Enter

Circle Radius");

radius = Integer.parseInt(s);

}

public void paint(Graphics g)

{

g.setColor(Color.RED);

g.fillArc(100, 100, radius, radius, 0, 360);

}

}

[email protected] Mohammed Mahmoud 38

ギلや ءやギレمج بゅنゲらلや グيヘレأ تギらي るلやstart るلやギلや グيヘレمن ثم تヱ ،りゲئやギلや ゲトف قダن メゅخキみب ュギガわسヨلや ュヲボلي ゅئيゅボヤتpaint

DrawingApplet.classلゲسم هや ログلやギئりゲ عヴヤ نゅفや りグلゲらنゅمج. بعギ تゲجや るヨلゲらنゅمج لヤحメヲダ عや ヴヤلヤヨف

يムヨن تヘレيや グلゲらنゅمج لぼゲيや るلゲガヨجれゅ بみحや ンギلゲトيわボين やلゅわليわين:

やヱJavac.exeلヲヨجキヲ في نヘس やلヨسや ケゅلヵグ يヲجギ فيه مゲわجم جゅفapplet viewer ゅ بゅسや ュやギガわلゲらنゅمج .1

ゅفゅج ゲسヘمヱJava.exe :りケゅらلعや るبゅわムلك بクヱ ، appletviewer DrawingApplet

مゲガجاや れلゲらنامج 1-2شムل

ت.قらل تヨツيゅヰレ عヴヤ صヘحや るإنゲわن appletلゲイわيب やヱخや ケゅらわلـ ヱapplet viewerيسや ュギガわلゲらنゅمج

[email protected] Mohammed Mahmoud 39

ـ .2 やキHTMLخل صヘحま るنゲわنت، ヱفيゅヨ يヤي نヲضح أبسط بゲنゅمج مゆヲわム بヤغapplet るعن ゲヅيق تヨツين やلـ

ケゅヰドإapplet نتゲわنや るحヘص ヴヤع:

<html>

<head>

<title> Drawing Applet </title>

</head>

<body>

<applet code="DrawingApplet.class" width="500"

height="500">

</applet>

</body>

</html>

،classهや ヲسم やلヤヨف بゅامHTML キやギわليわم كゅわبゅヰわ في بゲنゅمج やappletلヨعヲヤمや れゅلわي نحゅわجゅヰ عن やلــ

بعや ギلゲわجるヨ. كグلك نحま ァゅわلヱ メヲヅ ヴعや チゲلゅレفや りグلわي نゲغب في تダガيやヱapplet ゅヰダلヵグ يحヵヲわ عや ヴヤلــ

ـ ヤلapplet ع るضحヲヨلや れやケゅらلعや ظヘتح .るحヘダلや ヴヤ ロعاや キやギわامゅف بヤفي مhtml ヱأhtm، るトسやヲحه بわم فわيヱ

.مヘダわح やنゲわنت

مゲガجاや れلゲらنامج عヤى مわصヘح やانゲわنت 2-2شムل

[email protected] Mohammed Mahmoud 40

やلヨツヨن やキخل صヘحや るنゲわنت まلヴ بعض やلヨعヲヤمれゅ من تヤك やلヘダحる، مんا قギ تapplet ラヲムأحيゅنゅ قギ يحや ァゅわلــ

في معゲفや るلحイم やلحゅلي appletمسギガわمる في صヘحる تغيゲ من مゲヰヌهゅ بゅسケやゲヨわ، فゲわغب やلــ やappletلــ

ゲヅيるボ لや メキゅらわلヲسゅئط appletلヘダヤحヱ るنネヲ خط やلゅわムبや るلヨسュギガわ أヱ أヵ معヲヤمる أخンゲ. تヲفや ゲلـ

parameters مجゅنゲبين بヱ ゅヰレبيHTML れやケゅらع ュヲボحيث تHTML ،سيطヱ كل るヨقيヱ سمや ギيギحわب るيレمع

، كゅヨ هヲ مヲضح في ()getParameterعヴヤ قيم هや ログلヲسゅئط بゅسや ュやギガわلやギلヱapplet るتحダل やلـ

やلや メゅんヨلゅわلي:

import java.awt.*;

import javax.swing.*;

public class ParameterTest extends JApplet

{

int edge = 50;

int max = 1;

public void init()

{

edge = Integer.parseInt(getParameter("edge"));

max = Integer.parseInt(getParameter("maximum"));

}

public void paint(Graphics g)

{

for (int i = 1; i <= max; i++)

g.drawRect(i * 50 , i * 50 , edge, edge);

}

}

グلـ ه メゅんم ヲمج هゅنゲらلや やapplet わمن بتس るレئط معيゅسヲل ゅヨل قيらボるحヘダ HTML، لـや ゅヰمギガわثم تسapplet في

)( るلやギلや .ゅヰتやケゅらع グيヘレتgetParameter بين キギحヨلや سيطヲلや るヨجع قيゲわفي تس キヲجヲم ヲه ゅحسب م ゅヰسيヲق

るحヘص HTML. مجゅنゲء بゴج ラأ チゲヘレلHTML ـヤن لヨツわヨلやapplet ゅヨك ゆヲわムي:مヤي

<html>

<head>

<title> Parameter Test </title>

</head>

<body>

<applet code="ParameterTest.class" width="500"

height="500">

[email protected] Mohammed Mahmoud 41

<param name="edge" value="30"/>

<param name="maximum" value="5"/>

</applet>

</body>

</html>

، ヱتسや ュギガわلボيم في تحギيapplet ギلヤــ edge ヱmaximumعギレ تヘレيグ هや やグلゲらنゅمج يわم تゲヨيゲ قيم やلヲسゅئط

ゅヨك ،るイتゅレلや れゅبعゲヨلや キゅأبعヱ キギضح عヲم .ロゅنキمج أゅنゲらلや れゅجゲガفي م

مゲガجاや れلゲらنامج 3-2شムل

やإنゲわنت خヲダصゅ في مや メゅイلゲわفيه، مんل やألعヱ ゆゅتらトيれゅボ كんيやゲ في تらトيjava applets れゅボتسや ュギガわلـ

تヨわيゴ بヨイيع مヨيれやゴ لغる جゅفゅ، مゅヨ يイعゅヰヤ غレيやjava applets るلやヱ ケヲダأصやヱ れやヲلゲسや ュヲلわヨحゲكる. فゅلـ

.ュギガわسヨلや コゅヰج るسامヱ るيゲس ラゅヨツأمن لや من るليゅع るجケキ ゲفヲت ゅヨك ،れゅボيらトわلや من ゲيんムل るヨائヨلや れやケゅらلعゅب

らلسやヱ لـや ゅهゲفヲي تわلや أمنや るجケキ りキゅيコ ب فيapplet るمギخ ュギボم コゅヰمن ج ゅヰヤيヨم تحわأنه ي ヲه ゅهゲمن غي ゲんأك

キギع ヱمعين أ コゅヰج ヴヤل عヨتع ゅم りキゅي عわلや れゅボيらトわلや من ゅهゲاف غيガمين بギガわسヨلや りゴヰأج ヴلま نتゲわإنや

في やلや ヅゅボレلゅわليapplets :る محキヱギ من やأجりゴヰ. يムヨن تガヤيص مヨيや れやゴأمن やヱلسゲيや るلわي تヲفゲهや ゅلــ

بゅلギخま メヲلヴ نュゅヌ مや れゅヘヤلや コゅヰイلわي تم تحヨيゅヰヤ عヤيه ا قやゲءヱ りا كゅわبapplet .るا يسヨح لヤـ .1

بゼわغيل بゲنゅمج آخゲ عヴヤ جや コゅヰلヨسapplet .ュギガわا يسヨح لヤـ .2

بヲわصيل جや コゅヰلヨسュギガわ مع أヵ جコゅヰ آخapplet .ゲا يسヨح لヤـ .0

[email protected] Mohammed Mahmoud 42

applicationيムヨن أラ نحメヲ أヱapplication. ヵبやゲمج やلـ ベゲヘapplet بين بやゲمج やلـ تんヨل やلや ヅゅボレلسゅبや るボل

ヴلまapplet لـや نين أمنやヲボع لツガأنه ي ュやキゅمapplets لـや ゅأم ،るボبゅلسやapplets ヴلま メヲحわت ラن أムヨفي

application .ヅヱゲشـ ラヱギب

[email protected] Mohammed Mahmoud 43

الفصل الثالث: برمجة قواعد البياناQ باستخداg جافا

るلغ ゲفヲا ت れゅヘヤヨلや ヴヤع れゅمヲヤعヨلや ينゴガت ラや اや れゅヘヤヨلや ヴヤع れゅمヲヤعヨلや ينゴガわヤل ベゲヅ りギع ゅفゅج るイمゲらلや

يヲفま ゲمゅムنيや るاسわعاュ عن やلらيゅنやヱ れゅسゲわجゅعゅヰ بムゼل فعラや ،メゅ أنるヨヌ قやヲعや ギلらيゅنれゅ تヲفゲ لま ゅレمゅムنيる تゴガين

ゅجゲわسやヱ れゅنゅيらلや عن ュعاわاسゅب ゅレح لヨتس るボيゲトب れゅنゅيらلや يمヌレتヱヘب ゅヰعゅععやヲق ネやヲأن ゲヰشや منヱ ،るلي れゅنゅيらلや ギ

るيボلعائや れゅنゅيらلや ギعやヲقRelational Database System るلغ ュギガわتس れゅنゅيらلや ギعやヲمن ق ネヲレلや ログفي هヱ

るيヤムيヰلや れゅعامわاسやStructure Query Language (SQL) ،ゅヰعゅجゲわسやヱ れゅنゅيらلや عن ュعاわلاس

ヲダب れゅنゅيらلや ギعやヲمن ق りキゅヘわلاسヱ ،نتゲわانや れゅボيらトت ヱや بわムヨلや حトس れゅボيらトわب ゅヰトبケ من ギا ب るليゅんم りケ

れやケゅらع ュやギガわسゅب ゅヰيヤع ュعاわاسや れゅيヤヨء عやゲجやヱ れゅنゅيらلや ギعやヲボب メゅダاتや るنيゅムمま るイمゲらلや れゅم لغヌمع ゲفヲت

SQL :يヤي ゅم るيボلعائや れゅنゅيらلや ギعやヲم قヌن ゲヰشや من ،Microsoft Access ،Microsoft SQL Server،

Oracle ،Informix れゅنゅيらلや ギعやヲボل بダわي ゅفゅイلや るغヤمج بゅنゲب るبゅわك るيヘكي ヴヤع ラاや فゲعわレسヱ .ゅهゲغيヱن م

ネヲレلやMicrosoft Access ュعاわاسや るغヤب るفゲيك معギل ラや ケゅらわعゅب やグه ،SQL .れゅنゅيらلや ギعやヲم قヌهيم نゅヘمヱ

:れياناらلや りقاعد

ラاや ュヲボレءسゅゼنみب ネヲレلや من れゅنゅبي りギعゅقMicrosoft Access ゅヰヨسやヱUniversity ラヲムわت ، れゅنゅيらلや りギعゅق

University れゅيヤムلや メヱギج ゅヨه メヱギين جレثや منCollege ゆاトلや メヱギجヱStudents ضحヲلي يゅわلや لムゼلやヱ

:メヱやギイلや صيلゅヘت

College جدやメヱلهيムل 1-3شムل

メヱギイلや れゅنゅضح بيヲلي يゅわلや لムゼلやヱCollege:

Collegeبياناや れلجدメヱ 2-3شムل

[email protected] Mohammed Mahmoud 44

Studentsهيムل やلجدメヱ 3-3شムل

Studentsبياناや れلجدメヱ 4-3شムل

:ODBCتسجل قاعدP البياناQ في مصدر قواعد البياناQ المفتوحة るحヲわヘヨلや れゅنゅيらلや ギعやヲق ケギダفي م れゅنゅبي ケギダヨك ゅヰヤيイم تسわي ラや بイي ゅفゅمج جゅنゲらب れゅنゅيらلや りギعゅبط قケ لらق

Open Database Connectionや ، れゅنゅبي ケギダヨك れゅنゅيらلや りギعゅيف قゲم تعわف كيف يゲعレس ラاODBC

:るليゅわلや れやヲトガلや ネゅらتゅلك بクヱ

، ثم やلي やلガيクやControl Panel ケゅهب やلي لヲحや るلわحムم やクまWindows كレت تسュギガわ نや ュゅヌلゼわغيل

Administrative Tools ケゅيガلや ヴヤع ァヱキゴم ゲボن ゲボنやData Source (ODBC) ベヱギレلك ص ゲヰヌسي

ليゲヰヌ لك صや ベヱギレنゅゼء مやAdd ケギダنゲボ عや ヴヤلUser DSN ケゴ، من قゅئや3-5 るヨلشムل や ケやヲلヲヨضح في やلح

ギيギج れゅنゅني. بيゅんلや ضح فيヲم ゅヨك

ネヲレلや من れゅنゅبي りギعゅمل مع قゅعわن ゅنや ゅヨبヱMicrosoft Access ュギガわف نسヲسMicrosoft Access

Driver ケゴلや ヴヤضغط عや ثم ،Finish.

[email protected] Mohammed Mahmoud 45

ODBC حوケやصندベヱ 5-3شムل

るحヲわヘヨلや れゅنゅيらلや ギعやヲق ケギダヨب ソゅガلや ケやヲلحや ベヱギレص ラاや ゅレل ゲヰヌسيMicrosoft Access ュヲボحيث ن ،

بわحギيや ギلゅわلي:

[email protected] Mohammed Mahmoud 46

れゅنゅيらلや ギعやヲボب メゅダاتゅب ソゅガلや ゅفゅئن جゅل كらمن ق ュギガわسيس ヵグلや れゅنゅيらلや りギعゅسم قや خلキやJDBC لボلحや في

Data Source Nameゅボصف لヱ るفゅضま كレムヨي ゅヨل ، كボلحや في れゅنゅيらلや りギعDescription.

1. ケゴلや ヴヤع ゲボنやSelect メゅんヨلや やグفي ه( れゅنゅيらلや りギعゅحث عن قらلゅثم قم ب ،University.mdb،) ضغطやヱ

ケゴلや ヴヤعOK.

2. ケゴلや ヴヤضغط عやAdvance メヲخギلや سمや لボخل في حキや ،るمギボわヨلや れやケゅيガلや るヨئゅق ケゅヰドإaau فيヱ ،

ケヱゲヨلや るヨヤل كボحaau ヴヤضغط عやヱ ، ケゴلやOK.

0. ケゴلや ヴヤع ゲボنやOK ケやヲلحや ベヱギレمن ص ァヱゲガヤلODBC Microsoft Access Setup ヴヤع ゲボنや ثم ،

ケゴلやOK ケやヲلحや ベヱギレمن ص ァヱゲガヤل ンゲأخ りゲمODBC Data Source Administrator.

れゅنゅيらلや りギعゅボب メゅダلات ゅفゅイلや るغヤمج بゅنゲب るبゅわك ラاや كレムヨيUniversity.

[email protected] Mohammed Mahmoud 47

ケUniversity قاعدや りلらياناや れنشاء مصد 6-3شムل

れゅنゅيらلや りギعゅمن ق ュعاわاسや るيヤヨمج بسيط لعゅنゲب るبゅわムب ュヲボレلي سゅわلや メゅんヨلや فيUniversiy.mdb حيث ،

.れゅنゅيらلや عن ュعاわاسやヱ れゅنゅيらلや りギعゅボب メゅダاتや るيヘمج كيゅنゲらلや ضحヲي

import java.sql.*;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.util.*;

public class TableDisplay extends JFrame

{

private Connection connection;

private JTable table;

public TableDisplay()

{

String url = "jdbc:odbc:Driver={Microsoft Access

Driver (*.mdb)};DBQ=University.mdb;";

String username = "anonymous";

String password = "guest";

[email protected] Mohammed Mahmoud 48

try

{

Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );

connection = DriverManager.getConnection( url,

username, password );

}

catch(ClassNotFoundException cnfex )

{

System.err.println("Failed to load JDBC/ODBC

driver.");

cnfex.printStackTrace();

System.exit( 1 ); // terminate program

}

catch ( SQLException sqlex )

{

System.err.println( "Unable to connect" );

sqlex.printStackTrace();

}

getTable();

setSize( 450, 150 );

show();

}

private void getTable()

{

Statement statement;

ResultSet resultSet;

try

{

String query = "SELECT * FROM Students";

statement = connection.createStatement();

resultSet = statement.executeQuery( query );

displayResultSet( resultSet );

statement.close();

}

catch ( SQLException sqlex )

{

sqlex.printStackTrace();

}

}

[email protected] Mohammed Mahmoud 49

private void displayResultSet(ResultSet rs) throws

SQLException

{

boolean moreRecords = rs.next();

if ( ! moreRecords )

{

JOptionPane.showMessageDialog(

this,"ResultSet contained no records" );

setTitle( "No records to display" );

return;

}

setTitle( "Authors table from Books" );

Vector columnHeads = new Vector();

Vector rows = new Vector();

try

{

ResultSetMetaData rsmd = rs.getMetaData();

for ( int i = 1; i <= rsmd.getColumnCount(); ++i

)

columnHeads.addElement( rsmd.getColumnName(

i ) );

do

{

rows.addElement( getNextRow( rs, rsmd ) );

} while ( rs.next() );

table = new JTable( rows, columnHeads );

JScrollPane scroller = new JScrollPane( table );

getContentPane().add(

scroller, BorderLayout.CENTER );

validate();

}

catch ( SQLException sqlex )

{

sqlex.printStackTrace();

}

}

private Vector getNextRow( ResultSet

rs,ResultSetMetaData rsmd ) throws SQLException

{

Vector currentRow = new Vector();

[email protected] Mohammed Mahmoud 50

for ( int i = 1; i <= rsmd.getColumnCount(); ++i )

switch( rsmd.getColumnType( i ) )

{

case Types.VARCHAR:

currentRow.addElement( rs.getString( i )

);

break;

case Types.INTEGER:

currentRow.addElement( new Long(

rs.getLong( i ) ) );

break;

default:

System.out.println( "Type was: " +

rsmd.getColumnTypeName( i ) );

}

return currentRow;

}

public void shutDown()

{

try

{

connection.close();

}

catch ( SQLException sqlex )

{

System.err.println( "Unable to disconnect" );

sqlex.printStackTrace();

}

}

public static void main( String args[] )

{

final TableDisplay app = new TableDisplay();

app.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

app.shutDown();

System.exit( 0 );

}

});

[email protected] Mohammed Mahmoud 51

}

}

るمゴلحや ءゅعギわسゅا بヱأ ゅレヨقjava.sql في るيボلعائや れゅنゅيらلや ギعやヲق りケやキみب るボヤعわヨلや れゅゃヘلや كل ヴヤع ヵヲわي تحわلやヱ

るلغ るゃヘلや ュギガわتس ،ゅفゅイلやConnection لヨج グيヘレت るنيゅムمま ゲفヲت ゅヰنや ゅヨك れゅنゅيらلや りギعゅقヱ ゅفゅイلや مجゅنゲبين ب

SQL ギيゼヨلや في ،ゅヰيヤع ゅهグيヘレم تわي يわلや れゅيヤヨلعやヱ れゅنゅيらلや りギعゅق るイلゅعヨلゅボب メゅダاتや ءゅゼنみب ュヲボن れゅنゅيらلや りギع

るلやギلや ءゅعギわسゅئج بゅわレلや チゲم عわيヱ ュعاわاسや グيヘレتヱgetTable().

String url = "jdbc:odbc:University";

String username = "anonymous";

String password = "guest";

キやゲヨلや れゅنゅيらلや りギعゅقع قヲهي: مヱ ،ロأعا れゅヨيヤعわلや في るضحヲم ،れゅنゅيらلや りギعゅボب メゅダاتや من ギيゼヨلや نムヨわلي

ラやヲレلعや ギيギتح メمن خا ゅヰب メゅダاتやURL キギيح ヵグلやヱاヲكヲتゲらلやれ りギعゅボب メゅダاتや るيヤヨفي ع るمギガわسヨلや

بゅإضゅفや るلي やسم مケギダ قゅعや りギلらيゅنやヱodbc れゅلゲらتヲكや メヲلゲヘعي やjdbcلらيゅنヱ れゅهي やلゲらتヲكや メヲلゲئيسي

.ゅボبゅئه سゅゼنみب ゅレヨق ヵグلや

ヵゅب メゅダغل لاتゼم ゅفゅج るイمゲらلや るلغ ゲفヲت ギعやヲق ネやヲمن أن ネヲن るيレボت ュやギガわسゅب れゅنゅبيodbc هヨسや

jdbc:odbc:jdbcodbcDriver るلやギلや ュやギガわسゅب れゅنゅيらلや りギعゅボب メゅダاتや لらغل قゼヨلや やグيل هヨب تحイي

forName().

るلやギلや ュギガわتسgetConnection() るゃヘلや في りキヲجヲヨلやDriverManager れゅنゅيらلや りギعゅボب メゅダلاتグخほتヱ

れゅنゅيらلや りギعゅق ラやヲレئط عゅسヱ るثاثURL ヱゲヨلや るヨヤكヱ ュギガわسヨلや سمやヱ.ケ

るلやギلやgetTable() るلやギلや ءゅعギわسや من ثمヱ れゅنゅيらلや عن ュعاわاسゅب ュヲボتdisplayResultSet() ءゅゼإن メヱギج

ヱعチゲ نゅわئج やاسわعاュ من خاله.

Statement statement;

れやケゅらجع لعゲيف مゲعわب ゅレヨق ゲトلسや やグفي هSQL ネヲレلや منStatement るمゴلحや في キヲجヲم ヲهヱjava.sql

や やグه るトسやヲب りケゅらل عボم نわئن يゅムلSQL .ゅهグيヘレわل れゅنゅيらلや りギعゅلي قや

ResultSet resultSet;

.SQLتヘレيグ عれやケゅら نゅتج بケみجやヱネゅلヵグ يresultSet ュヲボفي هや やグامゲ قゅレヨ بわعゲيف やلゅムئن

[email protected] Mohammed Mahmoud 52

ResultSetMetaData rsMetaData

مんل أسゅヨء やresultSetلゅムئن يسュギガわ هや やグلゅムئن لヤحメヲダ عや ヴヤلヨعヲヤمや れゅلダヘわيヤيる عن やلや メヱギイلヲヨجキヲ في

るيヤيダヘわلや れゅنゅيらلゅب れゅمヲヤعヨلや ログه ヴヨتس ゅヰتゅنゅبي ネヲنヱ メヱギイلや メヲボحMeta Data.

مゲガجاや れلゲらنامج 7-3شムل

[email protected] Mohammed Mahmoud 53

الفصل الرابع: برمجة الشبكاQ باستخداg جافا

:Qالشبكا ゅأسや るボيゲトلや يヰف ،ゆヲسゅلحや れゅボيらトفي ت るلغゅب るيヨأه れやク ゆヲسゅلحや れゅムらش ゲらわيتعらلや ポケゅゼわل るسي れゅنゅ

ゲأث ンゲن ラن أムヨيヱ .るヘヤわガヨلや ュゅヌレلや りゴヰبين أج るئيسيゲلや メゅダاتや るヤسيヱ هيヱ ،るヘヤわガヨلや りゴヰأجやヱ ケキゅダヨلやヱ

.ラゅムم ヵمن أ ゅヰمل معゅعわن るムらش ゲヰأشヱ ゲらأك メゅんنت هي مゲわإنゅف .るヨヌأنや ネやヲف أنヤわガفي م ゅضحやヱ れゅムらゼلや

りギحやヱ るآل キヲجヱ نムヨヨلや ح منらأص れゅムらゼلゅبヱ れゅムらゼلや れゅボيらトتヱ .りゴヰأجや من ゲيらك キギع ゅヰفي ポケゅゼわي るعゅらトヤل

るلゅح るبعゅわヨمي لヲヨلعや يبらトلや يصガゼلع تゅトي ラص أダガわヨلや يبらトヤن لムヨا، يんم ヴヘゼわي مسヘله، ف ゲダا ح

ラゅك やクま ゅم キギيح ラأヱ ،يبらトلや るらغケ حسب れباゅボヨلや ギعيやヲم キギيح ラأ メゅらボわاسや فドヲيع مトわيسヱ ،يضゲヨلや

トي ヵグلや ءやヱギلや ملゅعヨلやヱ ラコゅガヨلや れゅنゅبي ヴヤع ネاヅاや ينキケヲヨヤن لムヨيヱ ،ا ヱأ るليギيダلゅب やゲفヲわيض مゲヨلや هらヤ

ログيع هヨسيط جらتヱ يلヰسわب ゆヲسゅلحや りゴヰأج ュヲボسب. تゅレヨلや قتヲلや في るيケヱゲツلや キやヲヨلや بヤトل るليギيダلやヱ

ま مわسي ヵグلや メゅヨلやヱ قتヲلやヱ ギヰイلや ケやギボم ケヲダわن ラن أムヨيヱ ،れゅムらゼلや يقゲヅ عن れゅيヤヨلعや ログء هやゲقه إجゅヘن

れゅムらゼلゅب やゲيらك ゅمゅヨわهや るイمゲらلや れゅلغヱ غيلゼわلや るヨヌلت أنヱأ ،ゆゅらأسや ログل هムل .れゅムらゼلや キヲجヱ ラヱギب れゅيヤヨلعや

.ゅヰتゅボيらトتヱ

ヴレسわي يムل ゅレمن بل ラヲムわي ラب أイي ،るムらش ゲらمج عゅنゲب グيヘレلتや مجゅنゲأقل: بや ヴヤين عイمゅنゲュキゅガ Server ヲهヱ ،

わヨي ヱأ るمギガلや ュギボي ヵグلや كヤي يわلや るمヲヤعヨلやيلヨلعや ゅヰらヤトلや مجゅنゲبヱ ،يلヨع Clientグلや ヲهヱ ، るمギガلや بヤトي ヵ

. ヱفي هや やグلボسم java.netلゲらمるイ تらトيや れゅボلヱ れゅムらゼهي حゴمる بゲمイيる . تヲفゲ لغる جゅفやュキゅガゅلわي يヲفゲهや ゅل

قらل クلك ヱلムن. TCP ヱUDPبゅسュやギガわ بゲتヲكヲلي تらトيや れゅボلやヱ ュキゅガلعヨيل نュギボ شゲحやヱ ゅفيゅ لゲらمるイ كل من

عヴヤ معゅني بعض やلヤトダヨحや れゅلヨسギガわمる في بゲمるイ تらトيや れゅボلわ .れゅムらゼعゲفابギ لゅレ من やل

Socket:

や بヅゅガわح بヨتسュキゅガلやヱ يلヨب مع لعヅゅガわلや るيヤヨعل عイわف ،るムらゼلゅب るصゅガلや るイمゲらلや صيلゅヘمج تゲらヨヤسط لらتヱ ،

.れゅヘヤヨلや ب معヅゅガわلゅه بらأش るムらゼلや

Port:

بや コゅヰイلحゅسュキゅガ .ゆヲمعゲفる مラゅム مヲقع بゲنゅمج やل لعヨيليسトわيع やكي ュキゅガهケ ヲقم يحや ロキギل

Datagram:

キギع ギヨわل. يعらボわسヨلや ラやヲレع ヴلま るفゅضま ゅヰلゅسケみسل بゲヨلや غبゲي يわلや れゅنゅيらلや لヨتح るレمعي ュゅイأح れやク れやギحヱ

.るヤسゲヨلや れゅنゅيらلや مイح ヴヤع れやギحヲلや

[email protected] Mohammed Mahmoud 54

TCPـ (Transmission Control Protocol):

ゅنれゅ ن ثم ケまسメゅ جヨيع やلらيヲاれ تヅゅガب やلヱ ،れゅムらゼفيゅヰ يわم فわح قや りゅレتメゅダ بين やلコゅヰイيمن أشゲヰ بヱゲتヲك

ヨلやキやゲ لムش ヴヤع ゅヰلゅسケまstream، ゴيヨわي .メゅダاتや りゅレق ベغاま ثم メヲكヲتヱゲらلや やグه るيキゅヨわاعゅبreliability.

UDPـ (User Datagram Protocol):

らلや メゅسケま مわفيه يヱ .れゅムらゼヤل ゲآخ メヲكヲتヱゲب ヲيق هゲヅ عن れゅنゅيdatagrams حわف ラヱキ ゅヰツعن بع るヤボわمس

ゴيヨわي ،るわبゅث メゅダتや りゅレق メヲكヲتヱゲらلや やグه.るعゲلسゅب

عمヤيや るاتصاメ بين やلガاやヱ ュキلعميل 1-4شムل

gوالعميل باستخدا gبرمجة الخادSocket Connection Stream:

ネヲレلや やグه ュギガわيس メゅダاتや من メヲكヲتヱゲبTCP، مわحيث يや りゅレح قわلفや مجゅنゲبين ب メゅダتュキゅガ لや مجゅنゲبヱيلعヨ ،

ヱقギ يや ラヲムلゲらنゅمラゅイ عヴヤ نヘس جや コゅヰلحゅسゆヲ أヱ عヴヤ جコゅヰين مヘヤわガين.

:gبرنامج الخاد

import java. io.*;

import java.net.*;

public class Server

{

public static void main(String args[])

{

try

{

ServerSocket serversocket = new

ServerSocket(7000);

Socket socket = ServerSocket.accept();

DataInputStream fromClient = new

DataInputStream(socket.getInputStream());

DataOutputStream toClient = new DataOutputStream

(socket.getOutputStream());

while(true)

{

[email protected] Mohammed Mahmoud 55

double number = fromClient.readDouble();

System.out.println("Client sent : " +

number);

double squareRoot = Math.sqrt(number);

toClient.writeDouble(squareRoot);

toClient.flush();

System.out.println("The square root = " +

squareRoot);

}

}

catch(IOException e)

{

e.printStackTrace();

}

}

}

خヱ ュキゅتحギيケ ギقم لإعاラ عن ヱجやServerSocket キヲلるゃヘ هやグ بゲنゅمج بسيط لュキゅガヤ، يわم أヱا まنゅゼء كゅئن من

るبやヲらلや (port) بヅゅガわسي ヵグلやュキゅガلや ゲヌわレي ゅهギاء. بعヨلعや مج معゅنゲらلや ロゲらب عヤヅ ュヱギيلقヨلعや من るمギガلや،

. ヱمن やلعヨيل ، ヱهや ヲلヵグ يحヨل معヲヤمれゅ قや りゅレاتメゅダ معやる Socketلゃヘ منكゅئن ヱعギレ حク ゐヱギلك يわم まنゅゼء

. ()getInputStreamيゅنれゅ من やلعヨيل بゅسや ュやギガわلやギلるاسわاや ュلDataInputStream らخاله يムヨن まنゅゼء

やلギガمや るلわي يギボمや ゅヰلュキゅガ لヤعヨيل. ヱفي هや やグلゲらنゅمج يسらボわل خュキゅ من やلعヨيل يヤわガف بゅقي やلゲらنゅمج بゅخわاف

ギي عボيボح キبيعゲわلや ケゴイلや ギيعيヱ ،キギعヤبيعي لゲわلや ケゴイلや يحسبヱيلヨلعや ヴلま يトبسي るمギガل メゅんفي م ، ゅヰمギボي る

るトسやヲب るيヤヨلعや ログه ゲヨわئن. تسゅبゴヤل ュギガヨلや るボヤلحや (true)ـwhile يلヨلعや ヱأ ュキゅガلや مجゅنゲي بヰレي ラأ ヴلま

ュやギガわسゅبCtrl+Cュキゅガلや やグه ラط ف . احظ أボف ギحやヱ ラヲبコ るمギيع خトわحيسやヲلや りゲヨلや كيف ي ゅボف احゲعレسヱ ،りギ

ュキゅガヤن لムヨب يヅゅガわلや يلヨلعや من ゲんمع أك.

برنامج العميل:

ラ يわم やلヵグ من やلチヱゲヘヨ أ やュキゅガتメゅダ بゲらنゅمج やليや ュヲボلعヨيل بみجやゲء ، ヱفيه عヨيلやلゲらنゅمج やلゅわلي هヲ بゲنゅمج やل

ムا لヱه أヤغيゼت るلヱゅمح ギレيب عイわاي يسや يلヨلعや メゅダبه.ت

import java.io.*;

import java.net.*;

public class Client

{

public static void main(String args[])

{

[email protected] Mohammed Mahmoud 56

try

{

Socket socket = new Socket("localhost", 7000);

DataInputStream fromServer = new

DataInputStream(socket.getInputStream());

DataOutputStream toServer = new

DataOutputStream(socket.getOutputStream());

while(true)

{

System.out.print("Enter a number: ");

double number = readDouble();

toServer.flush();

double squareRoot = fromServer.readDouble();

System.out.println("Square Root = " +

squareRoot);

}

}

catch(IOException e)

{

e.printStackTrace();

}

}

public static double readDouble()

{

DataInputStream in = new

DataInputStream(System.in);

try

{

double d = Double.parseDouble(in.readLine());

return d;

}

catch(Exception e)

{

System.out.println(e);

return 0;

}

}

}

や مجゅنゲأ بギらيليヨء لعゅゼنみئن بゅムلや socket لや مجゅنゲらب メゅダلاتュキゅガ コゅヰイلや ヴヤع キヲجヲヨلやlocalhost يわلやヱ ،

ゅنゲらلや سヘن ヴلま ゲيゼلتや مجゅنゲب ヴヤع ヵヲわيح ヵグلや يلمجヨع わسや مわي ،コゅヰイلや سヘن في نムلم ي メゅفي حヱら りケゅらلعや メやギ

[email protected] Mohammed Mahmoud 57

localhost ヵグلや コゅヰイلや قمゲلبや مجゅنゲب ヴヤع ヵヲわيحュキゅガ " اんقم 160.221.44.2، مケ ضيحヲلك تグم كわي ."

. يわم まعや7000キやギلダガヨص لヅゅガわヤب بين やلゲらنゅمイين، ヱهヲ في هや やグلやヲら (port) メゅんヨبやるل

DataInputStream ヱDataOutputStream ュاわل اسや ヴلまヱ من れゅنゅيらلや メゅسケまヱュキゅガ سヘレب

る من やلヨسキま ュギガわخメゅ عキギ يわم قやゲءته من やلゅゼش عヨيل. يヤトب بゲنゅمج やلゅュキゅガمج やلやلゲトيや るボلわي تم まنぼゅゼهゅ في بゲن

ゲمやヱاや ゲトس るلやギلや ュやギガわسゅبreadDouble() لや خلやキ るفゲعヨلや るゃヘSystem.in ュギガわي تسわلやヱ ،

ヴلま لهヲثم تح メゅخキإや るشゅمن ش ゲトس りءやゲボل ネヲレلや doubleم. يわ لや مجゅنゲب ヴلま キギلعや メゅسケま ュキゅガ ゅヨك ヵグلやヱ

. عヨيلやل ي ゅらヅヱعわه عヴヤ شゅشる بゲنゅمجنعヤم يュヲボ بحسや ゆゅلや ケグイلゲわبيعي لヤعヱ ،キギمن ثم やسや メゅらボわلや ケグイلゲわبيع

ゅんヨلや やグه ゥゲゼليや يイمゅنゲらل るئيسيゲلや れゅنヲムヨلや メガゅلやヱ ュキ يلヨعゅダاتや るيヤヨلع るمコلاやينイمゅنゲらلや بين メ ギبعヱ ،

لわحسين مGUI ゲヰヌمヲムنやヱ れゅلや メやヱギأسゅسيる، يムヨن تらトيق أヵ نュゅヌ جゅفゅ عヴヤ شまヱ るムらضゅفれゅゃヘ るمعゲفや るل

やلゲらنゅمج.

من عميل: أكثرالتخاطب مع

ラاや ュヲボレلب سや مجゅنゲب ヴヤيل عギعわガゅケキゅق ラヲムلي ュキلや من キギب مع عヅゅガわلや ヴヤع やاءヨع や سヘقت، كفي نヲل ゅヨ

やヱحギ لヤトب やلギガمやガゅュキ .るلグين يحヱゅلや ラヲاتメゅダ ب عヨاءن やليラヲム هポゅレ عキギ م، حيث ュキやヲガنヲわقع من أغヤب やل

ヲわلヴ عヤヨيや るلヅゅガわب ت threadمحヱ ،キギيュヲボ بみنゅゼء عヨيليュヲボ بゅسヤヅ メゅらボわب やلギガمる من ュキ بحيث ガゅيわم تعギيل やل

や ュキلヅゅガわب مع عキギ كらيゲ من やلゴبゅئن.ヤガゅيや るاتヱ ،メゅダبゅلゅわلي يسトわيع やلحヴわ تヨわムل عヨ عヨيلمع هや やグل

やلガわاطب بين やلガاヱ ュキعدキ من やلعماء 2-4 شムل

import java.io.*;

import java.net.*;

public class Server

[email protected] Mohammed Mahmoud 58

{

public static void main(String args[])

{

try

{

int clientID = 1;

ServerSocket serverSocket = new

ServerSocket(7000, 10);

while(true)

{

Socket socket = serverSocket.accept();

System.out.println("Connection established

For client: " + clientID);

InetAddress clientAddress =

socket.getInetAddress();

System.out.println("Client IP address: " +

clientAddress.getHostAddress());

ClientThread clientThread = new

ClientThread(socket, clientID);

clientThread.start();

clientID ++;

}

}

catch(IOException e)

{

e.printStackTrace();

}

}

}

class ClientThread extends Thread

{

Socket socket;

int clientID;

public ClientThread(Socket s, int id)

{

socket = s;

clientID = id;

}

public void run()

{

[email protected] Mohammed Mahmoud 59

try

{

DataInputStream fromClient = new

DataInputStream(socket.getInputStream ());

DataOutputStream toClient = new

DataOutputStream(socket.getOutputStream ());

while(true)

{

double number = fromClient.readDouble();

System.out.println("Client " + clientID + "

sent: " + number);

double squareRoot = Math.sqrt(number);

toClient.writeDouble(squareRoot);

toClient.flush();

System.out.println("The square root = " +

squareRoot);

}

}

catch(IOException e)

{

e.printStackTrace();

}

}

}

مع やلや ュキゅガلヅゅガわبやقヴダ عキギ من やلعヨاء やلグين يヰレムヨم ، يムヨن أラ نحServerSocket キギمن كゅئن عま ギレنゅゼء

،りギحやヲلや るヌحヤلや مج فيゅنゲらلや やグ10في ه ケキゅダヨلや مイحヱ يقらトわلや ネヲن ヴヤء عゅレب キギلعや やグه ケゅわガنヱ . ュヲボي سيわلや

اءعヨبسらب عや キギلا تحゐギ مゅゼكل ュキ فゅヅ ベヲقわه ヱأガゅخギمる، فゅلギヰف هヲ أا يキゴحم やل ュキ بحゴイهゅ لムل ゅヅلبやガゅل

.ゲيらムلやتゲفヲ るゃヘلやInetAddress لや عن れゅمヲヤاءمعヨع るムらゼلや في コゅヰイلや ラやヲレل عんمIP Address عن

るلやギلや يقゲヅgetHostAddress るلやギلや ュやギガわسゅب コゅヰイلや سمや ヱأgetHostName غيلゼتヱ يصダガم تわي .

thread ب ロギم ギبع るمギلب خゅヅ لムلるトسやヲ socket لや やグヰبع لゅわلやيلヨل عや بع بهゅわي ヵグلや هヨقケヱガゅ ュキاءヨلعや

clientID لـや بعゅわي .thread لや لヨعガゅلや メゅダتや りゲわف メやヲヅ ュキيلヨعラヲムمج . ا يゅنゲب ヴヤيل عギتع ヵأ ポゅレه

، ヱيわم やلゅヘわعل بين やلゲらنゅمイين تゅヨمゅ كゅヨ في やلや メゅんヨلسゅبق.عヨيلやل

[email protected] Mohammed Mahmoud 60

gوالعميل باستخدا gبرمجة الخادConnectionless Datagram Socket:

メヲكヲتヱゲب ネヲレلや やグه ュギガわيسUDP ي بــヨسヱ ،connectionless りゅレق キヲجヱ ュギل لعや بين るわبゅث メゅダتやガゅ ュキ

ヱ يلヨلعや في ゅヨكTCP りギحヱ لムش ヴヤع れゅنゅيらلや メゅسケま مわبل ي ،datagram كل ラみلك فグلヱ .م معينイح れやク

ヱشゥゲ عヨيلュキ بسيط ゅガゅヱمج لケまسゅلま ゅヰليه. فيゅヨ يヤي بゲنヱحりギ يイب أラ تحヵヲわ عヴヤ عや ラやヲレلや コゅヰイلヵグ سيわم

.ゅヨヰレبي れやギحヲلや メゅらボわسやヱ メゅسケま るيヤヨلع

import java.io.*;

import java.net.*;

public class Server

{

private DatagramSocket socket;

public Server()

{

try

{

socket = new DatagramSocket( 5000 );

}

catch( SocketException socketException )

{

socketException.printStackTrace();

System.exit( 1 );

}

}

private void waitForPackets()

{

while ( true )

{

try

{

byte data[] = new byte[ 100 ];

DatagramPacket receivePacket = new

DatagramPacket( data, data.length );

socket.receive( receivePacket );

System.out.println( "\nPacket received:" +

"\nFrom host: " +

receivePacket.getAddress() +

"\nHost port: " + receivePacket.getPort()

+

[email protected] Mohammed Mahmoud 61

"\nLength: " + receivePacket.getLength() +

"\nContaining:\n\t" + new String(

receivePacket.getData(),

0, receivePacket.getLength()));

sendPacketToClient( receivePacket );

}

catch( IOException ioException )

{

System.out.println( ioException.toString() +

"\n" );

ioException.printStackTrace();

}

}

}

private void sendPacketToClient( DatagramPacket

receivePacket ) throws IOException

{

System.out.println( "\n\nEcho data to client..."

);

DatagramPacket sendPacket = new DatagramPacket(

receivePacket.getData(),

receivePacket.getLength(),

receivePacket.getAddress(),

receivePacket.getPort() );

socket.send( sendPacket ); // send packet

System.out.println( "Packet sent\n" );

}

public static void main(String args[])

{

Server application = new Server();

application.waitForPackets();

}

}

や .Datagrampacketلعヨيلガゅキヱ ュين やللヅゅガわヤب ب や portلやヲらبる لわحギيやDatagramSocket ギلるゃヘ سュギガわت

ヲه るゃل فや ラヲムئنيゅム りギحヲلや عن りケゅらه عレمdatagram メゅسケإヱ .るムらゼلや ゲらع ゅヰلゅسケま ゆヲヤトヨلやdatagram،

يイب أラ تحヵヲわ بやギخゅヰヤ عヴヤ بعض やلヨعヲヤمヱ れゅهي:

عや ラやヲレلや コゅヰイلヵグ نゲغب في ケまسや メゅلヲحま りギليه. .1

やلダガヨص لヅゅガわヤب. やヲら portبケるقم やل .2

[email protected] Mohammed Mahmoud 62

ケま ゆヲヤトヨسゅلや .ゅヰلらيゅنや れゅل .0

4. .るヤسゲヨلや れゅنゅيらلや メヲヅ

ヨلや ログين هヨツم تわي ،るムらゼلや ヴلま るレمعي りギحヱ メゅسケま ギレلعや يقゲヅ عن りギحヲلや خلやギب れゅمヲヤعギيゼヨ بـ ソゅガلや

DatagramPacket :ゅヰレم るليゅわلや れゅمヲヤعヨلや ソاガわسや مわي ،るムらゼلや من りギحヱ メゅらボわسや ギレعヱ .りギحヲلや ءゅゼنま ギレع

ゅلゅヰ مレه. عや ラやヲレلや コゅヰイلヵグ تم ケまس .1

やلダガヨص لヅゅガわヤب. やヲら portبケるقم やل .2

やلらيゅنや れゅلわي أケسや ゅヰヤلゲヨسل. .0

4. .りキケやヲلや れゅنゅيらلや メヲヅ

ラヲبゴلや مجゅنゲي بヤي ゅヨفيclient ュやギガわسゅبق بゅلسや مجゅنゲらلや ب معヅゅガわي ヵグلやdatagrams.

import java.io.*;

import java.net.*;

import javax.swing.*;

public class Client

{

private DatagramSocket socket;

private BufferedReader br;

public Client()

{

try

{

socket = new DatagramSocket();

br = new BufferedReader(new

InputStreamReader(System.in));

}

catch( SocketException socketException )

{

socketException.printStackTrace();

System.exit( 1 );

}

}

private void waitForPackets()

{

while ( true )

{

try

{

[email protected] Mohammed Mahmoud 63

String message = br.readLine();

byte data[] = message.getBytes();

DatagramPacket sendPacket = new

DatagramPacket( data,

data.length,

InetAddress.getLocalHost(), 5000 );

socket.send( sendPacket ); // send packet

System.out.println( "Packet sent\n" );

}

catch ( IOException ioException )

{

System.out.println(

ioException.toString() + "\n" );

ioException.printStackTrace();

}

try

{

byte data[] = new byte[ 100 ];

DatagramPacket receivePacket = new

DatagramPacket(data, data.length );

socket.receive( receivePacket ); // wait for packet

System.out.println( "\nPacket received:"

+

"\nFrom host: " +

receivePacket.getAddress() +

"\nHost port: " +

receivePacket.getPort() +

"\nLength: " +

receivePacket.getLength() +

"\nContaining:\n\t" + new String(

receivePacket.getData(),

0, receivePacket.getLength() ) );

}

catch( IOException exception )

{

System.out.println( exception.toString()

+ "\n" );

exception.printStackTrace();

}

}

[email protected] Mohammed Mahmoud 64

}

public static void main( String args[] )

{

Client application = new Client();

application.waitForPackets();

}

}

ュギガわتسBufferedReader لや れゅنゅبي りءやゲボيللヨع るلやギلや ュヲボت .るشゅゼلや منgetLocalHost るبعゅわلやلヤるゃヘ

InetAddress لや コゅヰج ラやヲレع ゲفيヲわبガゅ コゅヰイلや سヘن メゅんヨلや やグفي ه ヲهヱ ،ليهま れゅنゅيらلや メゅسケま ゆヲヤトヨلや ュキ

ゅنゲبه ب ギجヲي ヵグلやや يلمجヨلع .localhost イلや やグعن ه ゲらلتعや مجゅنゲب ラゅك やクまヱ ،コゅヰガゅ ゲآخ コゅヰفي ج やキヲجヲم ュキ

ヲهヱ メゅلحや ب فيヤمج أغやゲらلや - بイيل يギتع ラやヲレلعや ヴلま ラやヲレع コゅヰイلや ヵグلや ギجヲمج به يゅنゲل بやガゅュキ.

[email protected] Mohammed Mahmoud 65

المراجع:

ゅفゅイلや るغヤب るイمゲらلやس るحヲわヘヨلや ラやキヲلسや るمعゅج

سبゅلحや るイمゲسب るムヤヨヨلや هجゅレヨلや ゲيヲトتヱ يمヨダわل るمゅلعや りケやキإやるيキヲلسعや るبيゲلعや

Edition thJava How to Program 9