اذهب إلى المحتوى

Lujain Maaz

الأعضاء
  • المساهمات

    344
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    27

كل منشورات العضو Lujain Maaz

  1. عملية النسخ من ملف إلى آخر هي في الواقع عملية قراءة من ملف وكتابة إلى آخر يتم ذلك باستخدام FileWriter و FileReader. تتم القراءة من الملف الأول بإنشاء غرض object من نوع FileReader وتمرير اسم الملف في المُنشئ constructor، وكذلك الحال بالنسبة للكتابة على الملف الثاني حيث يُنشئ غرض من نوع FileWriter ويمرّر اسم الملف المراد النسخ عليه في المنشئ constructor FileReader in = null; FileWriter out = null; try { in = new FileReader("input.txt"); out = new FileWriter("output.txt");نستخدم الدالة .read() من الصف FileReader للقراءة من الملف بعمل حلقة تكرار وطباعة محتوى النص على الملف الآخر. تُرجع الدالة read() متغير int وهو رقم index الحرف المقروء. تتم القراءة باستخدام FileReader بقراءة كل 16بت (unicode character) على حدى أي في كل مرة سيتم قراءة حرف يونيكود bit16 = 2byte من الملف الأول وكتابته على الملف الثاني: import java.io.*; public class ReadDir { public static void main(String args[]) throws IOException { FileReader in = null; FileWriter out = null; try { in = new FileReader("C://test/input.txt"); out = new FileWriter("C://test/output.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } }finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } }
  2. يمكن القراءة من مجلد directory في تطبيق جافا باستخدام الدالة ()List بعد تضمين المكتبة: import java.io.File;حيث يتم ذلك عن طريق إنشاء غرض object من نوع File وتمرير مسار المجلد الذي تريد إظهار الملفات والمجلدات الموجودة فيه في المُنشئ Constructor ثم استدعاء الدالة List() كما في المثال التالي الذي يظهر محتوى المجلد tmp: import java.io.File; public class ReadDir { public static void main(String[] args) { File file = null; String[] paths; try{ // create new file object file = new File("/tmp"); // array of files and directory paths = file.list(); // for each name in the path array for(String path:paths) { // prints filename and directory name System.out.println(path); } }catch(Exception e){ // if any error occurs e.printStackTrace(); } } } تُرجع الدالة List() مصفوفة من نوع string تحتوي على مسارات جميع الملفات والمجلدات الموجودة في الـ directory الذي نريد قراءة محتوياته. عند طباعة محتوى مجلد tmp على java console: (يحتوي مجلد tmp على مجلد واحد هو user)
  3. يتوفر في جافا دالتين في التعامل مع المجلدات directories هما mkdir() و mkdirs الدالة ()mkdir تنشئ مجلد directory تُرجع قيمة ture في حال نجاح العملية وإنشاء المجلد أو قيمة false في حال فشل إنشاء المجلد (تفشل عملية إنشاء المجلد في حال كان المسار موجود مسبقًا أي لا يمكن إنشاء مجلدين بنفس الاسم في نفس المكان) أو أن يكون المسار غير صحيح.الدالة ()mkdirs تنشئ مجلد directory مع جميع المجلدات التي يحتويها.مثال إنشاء المجلدات /tmp/user/java/bin: import java.io.File; public class CreateDir { public static void main(String args[]) { String dirname = "/tmp/user/java/bin"; File d = new File(dirname); // Create directory now. d.mkdirs(); } }سيتم إنشاء مجلد جديد في القرص C باسم tmp يحوي على المجلدات user->java->bin بالترتيب:
  4. تتم الكتابة على الملفات في جافا باستخدام FileOutputStream حيث يتم إنشاء الملف في حال عدم وجوده ثم الكتابة عليه أو الكتابة عليه مباشرة في حال وجوده. أنشئ غرض object من الصف FileOutputStream والذي يحتوي على تعريفين للـ constructor الأول يأخذ معامل وهو اسم الملف المراد الكتابة عليه لإنشاء قناة output stream: OutputStream f = new FileOutputStream("C:/java/hello") المُنشئ الثاني يأخذ متغير من نوع File كمعامل argument لإنشاء قناة output stream: File f = new File("C:/java/hello"); OutputStream f = new FileOutputStream(f);في المثال التالي ستتم الكتابة على الملف الموجود في المسار: C://test/myFile.txtثم القراءة منه وعرض محتوى الملف على java console: import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class FileOutputStreamDemo { public static void main(String[] args) throws IOException { FileOutputStream fos = null; FileInputStream fis = null; byte[] b = {65,66,67,68,69}; int i=0; char c; try{ // create new file output stream fos=new FileOutputStream("C://test/myFile.txt"); // writes bytes to the output stream fos.write(b); // flushes the content to the underlying stream fos.flush(); // create new file input stream fis = new FileInputStream("C://test/myFile.txt"); // read till the end of the file while((i=fis.read())!=-1) { // convert integer to character c=(char)i; // prints System.out.print(c); } }catch(Exception ex){ // if an error occurs ex.printStackTrace(); }finally{ // closes and releases system resources from stream if(fos!=null) fos.close(); if(fis!=null) fis.close(); } } }ملاحظة: في التعامل مع الملفات يستحسن استخدام try() catch() بل في جافا يجبرك أن تقوم بوضع عملية القراءة والكتابة على الملفات ضمن try() catch(). عند فتح الملف: طباعة محتوى الملف على java console:
  5. يتم التعامل مع الملفات في جافا باستخدام عدّة صفوف classes أهمها الصفين FileInputStram و FileOutputStream. لقراءة ملف نصي Text في تطبيق جافا باستخدام FileInputStream يتم إنشاء غرض object من FileInputStream ومن ثم تمرير المعاملات arguments المناسبة في المُنشئ constructor حيث أن هناك عدة أنواع للـ constructor. الشيفرة التالية تبين كيفية استخدام النوع الأول والذي يأخذ معامل من نوع string وهو مسار الملف المراد قراءته: InputStream f = new FileInputStream("C:/java/hello"); النوع الثاني يأخذ معامل من نوع File لإنشاء قناة قراءة inputStream لقراءة الملف: File f = new File("C:/java/hello"); InputStream f = new FileInputStream(f);المثال التالي يعرض طريقة القراءة من ملف نصي باستخدام FileInputStream وطباعة محتوى الملف على java console: import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class ReadFileExample { public static void main(String[] args) { File file = new File("C:/test/myFile.txt"); FileInputStream fis = null; try { fis = new FileInputStream(file); System.out.println("Total file size to read (in bytes) : " + fis.available()); int content; while ((content = fis.read()) != -1) { // convert to char and display it System.out.print((char) content); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (fis != null) fis.close(); } catch (IOException ex) { ex.printStackTrace(); } } } }النتيجة:
  6. يمكن إظهار صور في تطبيق Applet كصور GIF و JPEG و BMP وغيرها. لإظهار صورة في Applet تُستخدم الدالة drawImage() الموجودة في الصف: the java.awt.Graphics classيتم ذلك بتعرف غرض من النوع Image وإنشاء غرض AppletContext وهو السياق الذي سيتم رسم الصورة عليه: private Image image; private AppletContext context;يجب أولًا تضمين المكتبات: import java.applet.AppletContext; import java.awt.Graphics; import java.awt.Image;في الدالة init() الخاصة بالـ Applet اكتب الشيفرة التالية: public void init() { context = this.getAppletContext(); String imageURL = this.getParameter("image"); if(imageURL == null) { imageURL = "java.jpg"; } try { URL url = new URL(this.getDocumentBase(), imageURL); image = context.getImage(url); }catch(MalformedURLException e) { e.printStackTrace(); // Display in browser status bar context.showStatus("Could not load image!"); } }لرسم الصورة على Applet أنشئ غرضًا من نوع Graphics واستدعي الدالة drawImage، يتم عمل ذلك في الدالة paint وتمرير الغرض Graphics g: هنا مثال يعرض كيفية استخدام الدالة drawImage() لعرض الصور في Applet public void paint(Graphics g) { context.showStatus("Displaying image"); g.drawImage(image, 0, 0, 200, 84, null); g.drawString("www.javalicense.com", 35, 100); } كيف أُظهر صورة Gif في تطبيق Java Applet؟
  7. يتم تشغيل ملف audio في Applet باستخدام AudioClip interface الموجود في java.applet. يحتوي AppletClip على ثلاث دوال مسؤولة عن تشغيل الملف الصوتي: Public void play() تُشغّل المقطع الصوتي مرة واحدة من البداية. Public void loop() تعيد تشغيل الملف الصوتي بشكل مستمر. ()Public void stop توقف تشغيل الملف الصوتي. لإنشاء غرض AudioClip عليك استدعاء الدالة getAudioClip() من الصف Applet، الدالة getAudioClip() تُرجع مباشرة رابط الملف الصوتي الفعلي. أي أن الملف الصوتي لا يحمّل إلى حين تشغيل المقطع الصوتي audio clip. المثال التالي يعرض كيفية تشغيل ملف audio : import java.applet.*; import java.awt.*; import java.net.*; public class AudioDemo extends Applet { private AudioClip clip; private AppletContext context; public void init() { context = this.getAppletContext(); String audioURL = this.getParameter("audio"); if(audioURL == null) { audioURL = "default.au"; } try { URL url = new URL(this.getDocumentBase(), audioURL); clip = context.getAudioClip(url); }catch(MalformedURLException e) { e.printStackTrace(); context.showStatus("Could not load audio file!"); } } public void start() { if(clip != null) { clip.loop(); } } public void stop() { if(clip != null) { clip.stop(); } } }كيف أُشغّل ملف audio في تطبيق Java Applet؟
  8. يتم استدعاء وتشغيل تطبيق Java Applet من خلال كتابة اسم الملف ذو اللاحقة .class في الخاصية code للوسم <applet> في html. يوجد الملف .class عادة في المجلد bin من ملف المشروع. سأقوم بإنشاء وسم Applet في HTML وإعطاءه مسار مشروع Applet عن طريق الخاصية code كما في المثال التالي: <!DOCTYPE html> <html> <head> <title>HTML applet Tag Example</title> </head> <body> <applet code="myApplet.class" width="300" height="200"> Hello World! </applet> </body> </html>في حال عدم دعم متصفحك لتشغيل تطبيقات الجافا يجب تحميل ملحق تشغيل جافا من الرابط التالي: Free Java Download عند تشغيل صفحة الويب يتم تشغيل تطبيق Applet قد يطلب منك المتصفح قبل ذلك السماح بتشغيل التطبيق:
  9. تتيح FlowLayout في جافا وضع العناصر بشكل أفقي واحد تلو الآخر ابتداءً من اليسار إلى اليمين حتى انتهاء السطر ومن ثم الانتقال للسطر التالي وهي الشكل الافتراضي default layout أي أنه في حال عدم تحديد أي شكل للواجهة فإن الواجهة ستأخذ شكل FlowLayout وتقوم بترتيب العناصر على أساسها. يتم إنشاء FlowLayout عن طريق إنشاء غرض من الصف FlowLayout ويمكن إنشاء FlowLayout في المُنشئ Constructor الخاص بالغرض JPanel كما في المثال التالي: JPanel flowPanel = new JPanel(new FlowLayout());المثال التالي يوضح كيفية إضافة العناصر إلى FlowLayot وطريقة عرضها: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class myFrame extends JFrame { JPanel pnl = new JPanel(new FlowLayout()); JTextField txt = new JTextField(20); JButton btn1 = new JButton("Enter"); JButton btn2 = new JButton("Save"); JButton btn3 = new JButton("Add"); JButton btn4 = new JButton("Close"); JTextArea txtArea = new JTextArea("Hello World"); public myFrame() { pnl.add(txt); pnl.add(btn1); pnl.add(btn2); pnl.add(btn3); pnl.add(btn4); pnl.add(txtArea); this.add(pnl); } public static void main(String[] args) { myFrame test = new myFrame(); test.setSize(500, 500); test.setTitle("JFrame Example"); test.setVisible(true); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
  10. تُعتبر مكتبة Swing أحد المكتبات التي توفر عناصر controls لبناء واجهة تطبيق رسومية في تطبيقات جافا. لإنشاء تطبيق واجهة رسومي في جافا عليك أولًا بإنشاء مشروع جديدعلى أحد الـ IDEs التي تدعم البرمجة بلغة جافا مثل NetBeans و Eclipse. بعد ذلك أضف صف جديد Class إلى المشروع وقم بتسميته myJavaApp مثلًا. الخطوة الأساسية لبناء واجهة تطبيق هي عمل وراثة Extends للصف JFrame من الصف الجديد الذي قمت بإنشائه. يعتبر الصف JFrame أحد أهم الصفوف في Swing حيث لا يمكن إظهار الواجهة بدونه. الآن قم بتحديد خصائص الواجهة JFrame مثل الطول والعرض ومكان ظهورها على الشاشة عند تشغيل التطبيق وكذلك عنوان الواجهة Title. ملاحظة: لا يمكن للـ Frame أن يظهر بدون استدعاء الدالة setVisible وإعطاءها قيمة true. import javax.swing.*; import java.awt.*; import java.awt.event.*; public class myFrame extends JFrame { public myFrame() { } public static void main(String[] args) { myFrame test = new myFrame(); test.setSize(500, 500); test.setTitle("JFrame Example"); test.setVisible(true); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }واجهة التطبيق JFrame:
  11. يُعتبر تطبيق telegram أحد تطبيقات المحادثات الذي أخذ بالانتشار الكبير في الآونة الأخيرة نظرًا للميزات الجديدة التي يتمتع بها كالسرعة وميزة Telegram Bots بالإضافة لميزة العدد غير المحدود للأعضاء في المجموعة الواحدة Group ما جعله يتفوق على نظيره Whatsapp. يمكن تعريف telegram bots بأنها برمجيات تشبه لحد ما البرامج الذكية كالروبوت، حيث أنها تستجيب لأوامر معينة من المستخدم لتقديم خدمات تمكّن المشتركين من الاستفادة منها عن طريق إضافة حساب الـ bot بواسطة البحث عنه واختياره ليظهر في قائمة المحادثة ومن ثم التواصل معه بواسطة أوامر. الخدمات التي تقدمها telegram bots معرفة أسعار العملات وحالات الطقس والكثير. مثلًا BotForTelgram هو أحد الـ bot المشهورة في تلغرام وهو روبوت يقوم بالاستجابة لعدة أوامر مثل أمر !help لعرض قائمة بجميع الأوامر المستخدمة في تطبيق تلغرام. والأمر !Weather الذي يمكنك من معرفة حالة الطقس في مدينة معينة. ماهو bots في تلغرام؟
  12. توفر تقنية MD5 إمكانية تشفير النصوص بطريقة لا يمكن فيها الرجوع للنص الأصلي بحيث تتم المقارنة بين النصوص بعد التشفير ولا يتم التعامل مع النصوص بصيغتها الأصلية. يتم تشفير النصوص باستخدام الصف MD5 في C# وإنشاء غرض منه من النوع MD5CryptoServiceProvider: كما في المثال التالي: MD5 md5 = new MD5CryptoServiceProvider();ومن ثم استدعاء الدالة CopmuteHash وتمرير معامل Argument وهو النص المراد تشفيره باستخدام ASCIIEncoding.ASCII.GetBytes(text). //compute hash from the bytes of text md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(text)); بعد ذلك قم بأخذ القيمة من الغرض md5 عن طريق الدالة Hash حيث أن القيمة المرتجعة هي عبارة مصفوفة من byte. byte[] result = md5.Hash;في النهاية أنشئ StringBuilder واعمل append للنتيجة كما في المثال التالي: public static string MD5Hash(string text) { MD5 md5 = new MD5CryptoServiceProvider(); //compute hash from the bytes of text md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(text)); //get hash result after compute it byte[] result = md5.Hash; StringBuilder strBuilder = new StringBuilder(); for (int i = 0; i < result.Length; i++) { //change it into 2 hexadecimal digits //for each byte strBuilder.Append(result[i].ToString("x2")); } return strBuilder.ToString(); } تشفير نصوص باستخدام MD5
  13. يتم إنشاء تطبيق Applet في جافا بواسطة عمل extends للصف Applet Class من الصف الجديد الخاص بالتطبيق. عليك أولًا إنشاء مشروع جافا جديد java project في eclipse قم باختيار java project من القائمة File->New -> Java Project. ثم اكتب اسم المشروع واضغط على زر Finish. الآن أضف صف class جديد بالضغط على الزر اليميني لاسم المشروع AppletExample واختيار Add->New->Class ثم قم بتسميته وليكن myApplet مثلًا، أصبح لدينا صف جديد myApplet ولكن لم نقم بإنشاء تطبيق Applet بعد. الخطوة الأخيرة هي عمل Extends للصف Applet من الصف myApplet، يجب أولًا عمل تضمين import للمكتبة java.applet على الشكل التالي: import java.applet.Applet;أصبح الآن كل شيء جاهز لتشغيل تطبيق Applet ولكن بقي أمر أخير ومهم وهو الدالة init() هذه الدالة هي النقطة التي ينطلق منها تطبيق Applet بحيث أنها أول دالة تنفّذ عند تشغيل التطبيق. مثلًا سأقوم بعرض Label وجملة Hello World! في الدالة init() لتظهر عند تشغيل التطبيق لتكون الشيفرة البرمجية على الشكل التالي: import java.applet.Applet; import javax.swing.JLabel; public class myApplet extends Applet { public void init() { this.add(new JLabel("Hello World!")); } }
  14. يُستخدم العنصر Calender لعرض التقاويم الميلادية والهجرية حيث تحوي calneder على عدد كبير من الخصائص مثل تحديد اليوم الأول من الأسبوع باستخدام الخاصية FirstDayofWeek والتي تأخذ قيم: Sunday|Monday|Tusday|Wedensday|Thursday|Friday. والخاصية DayNameFormat تحدد طريقة عرض اليوم (اسم كامل،الحرف الأول فقط...الخ) حيث تأخذ قيم: Full|Short|FirstLetter|FirstTwoLett|Shortest. لإنشاء calender في asp.net نكتب: <asp:Calendar id="calendar1" runat="server"></asp:Calender> يمكن تغيير لون الأيام في الـcalender بحسب نوعها، مثلًا تلوين أول يوم من أيام الأسبوع بلون معين: <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>ASP.NET Example</title> </head> <body> <form id="form1" runat="server"> <asp:Calendar id="calendar1" runat="server"> <OtherMonthDayStyle ForeColor="LightGray"> </OtherMonthDayStyle> <TitleStyle BackColor="Blue" ForeColor="White"> </TitleStyle> <DayStyle BackColor="gray"> </DayStyle> <SelectedDayStyle BackColor="LightGray" Font-Bold="True"> </SelectedDayStyle> </asp:Calendar> </form> </body> </html> لعلّ الدالة onDayRender هي أهم دالة في Calender حيث أنها تُنفذ عند إنشاء وإظهار Calender، يمكن الاستفادة من الدالة onDayRender في الكثير من المهام. كمثال يمكن تلوين أيام العطل الرسمية بلون معين وكذلك تغيير ألوان أيام شهر معين..الخ. مثال: <html> <head> <title>DayRender Event Example</title> <script language="C#" runat="server"> void DayRender(Object source, DayRenderEventArgs e) { // Change the background color of the days in the month // to yellow. if (!e.Day.IsOtherMonth && !e.Day.IsWeekend) e.Cell.BackColor=System.Drawing.Color.Yellow; // Add custom text to cell in the Calendar control. if (e.Day.Date.Day == 18) e.Cell.Controls.Add(new LiteralControl("<br />Holiday")); } </script> </head> <body> <form id="form1" runat="server"> <h3>DayRender Event Example</h3> <asp:Calendar id="calendar1" OnDayRender="DayRender" runat="server"> <WeekendDayStyle BackColor="gray"> </WeekendDayStyle> </asp:Calendar> </form> </body> </html> كيف أتعامل مع Calendar في Asp.Net؟
  15. يمكن تغيير قيمة cookie في JQuery بالطريقة التالية: $.cookie("Key", Value);حيث تتغير قيم الـ value اعتمادًا على الـ key يمكن أيضًا إضافة صلاحية للـ Cookie باستخدام expires كما في المثال: $.cookie("test", 1, { expires : 10 });ملاحظة: عند استخدام expires لـ Cookie تصبح عبارة عن session Cookie. لحذف الـ Cookie في JQuery تستخدم removeCookie: $.removeCookie("test");لأخذ قيمة Cookie في JQuery نكتب: var cookieValue = $.cookie("test");توفر أيضًا setCookie و getCookie إمكانية لتغيير أو أخذ قيمة Cookie: setCookie('test','1');getCookie('test');تستخدم Cookie في مواقع الويب لتخزين معلومات الزوار مثلًا اللغة التي اختارها في الموقع أو اللون، هناك أغراض كثيرة لاستخدام الـ Cookies وكلها تتعلق بمساعدة موقع الويب في تذكر المستخدمين. كيف أعدّل على cookie باستخدام JQuery؟
  16. تُعدّ Grid Layout من أكثر النماذج استخدامًا في ترتيب العناصر ضمن واجهات تطبيقات جافا وذلك بسبب مرونتها الكبيرة وسهولة توضع العناصر بأي طريقة يرغب المبرمج أن يظهر الواجهة بها. يتم إنشاء Grid Layout عن طريق إنشاء غرض من الصف GridLayout وتمرير معاملين في المُنشئ Constructor هما عدد الأسطر وعدد الأعمدة. يمكن إنشاء Grid Layout في المُنشئ Constructor الخاص بالغرض JPanel كما في المثال التالي: JPanel panel = new JPanel(new GridLayout(2,2));ومن ثم إضافة JPanel إلى واجهة التطبيق JFrame. لنفرض أننا نريد صنع نموذج لحاسبة ونريد إنشاء مجموعة من الأزرار من 0-9 وأزرار العمليات الأربع (+,-,/,*) وزر مسح clear باستخدام GridLayout، وإضافة حقل JTextField في بداية الواجهة. import javax.swing.*; import java.awt.*; import java.awt.event.*; public class GridLayoutExample extends JFrame { JPanel panelTxt = new JPanel(new BorderLayout()); JPanel panel = new JPanel(new GridLayout(4,4)); JTextField txtField = new JTextField(); JButton btnPlus = new JButton("+"); JButton btnMinus = new JButton("-"); JButton btnDivid = new JButton("/"); JButton btnMultiply = new JButton("*"); JButton btnClear = new JButton("C"); public GridLayoutExample() { for(int i=0; i<10; i++) { JButton btn = new JButton(i+""); panel.add(btn); } panel.add(btnPlus); panel.add(btnMinus); panel.add(btnDivid); panel.add(btnMultiply); panel.add(btnClear); txtField.setPreferredSize(new Dimension(20, 100)); panelTxt.add(txtField,BorderLayout.NORTH); panelTxt.add(panel,BorderLayout.CENTER); this.add(panelTxt); setSize(500, 500); setVisible(true); setTitle("Grid Layout Example"); } public static void main(String[] args) { JMenuExample test = new JMenuExample(); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }عند إضافة العناصر إلى GridLayout فإن كل عنصر يأخذ ترتيبه بشكل تلقائي ابتداءً من الخلية 0. يمكنك تحديد رقم الخلية الذي تود وضع العنصر فيها بواسطة المعامل الثاني للدالة add وهي index حيث يوضع فيه رقم الخلية مثال: panel.add(btnPlus,5);أي أنه سيتم وضع الزر الخاص بعملية الجمع في الخانة رقم 5. كيف أتعامل مع Grid Layout في جافا swing؟
  17. عليك أولًا أن تقوم بتطبيق حدث addActionListener على الزر append يقوم هذا الحدث بتنفيذ الدالة actionPerformed عند الضغط على زر append. لاستخدام الصف ActionListener قم بتضمين المكتبتين ActionEvent و ActionListener import java.awt.event.ActionEvent; import java.awt.event.ActionListener;تطبيق الحدث addActionListener على الزر append وعمل إعادة تعريف override للدالة actionPerformed كما في المثال التالي: button1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { txtArea.append("\n"+txtField.getText()); } });في الحدث actionPerformed نستدعي الدالة append ونمرر قيمة الحقل JTextField عن طريق الدالة getText() ليكون المثال على الشكل التالي: import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import java.awt.*; import java.awt.event.*; public class ActionListenerExample extends JFrame { JButton button1 = new JButton("append"); JTextArea txtArea = new JTextArea(50,20); JPanel panel = new JPanel(new FlowLayout()); JTextField txtField = new JTextField(20); public ActionListenerExample() { panel.add(button1); panel.add(txtField); panel.add(txtArea); button1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { txtArea.append("\n"+txtField.getText()); } }); this.add(panel); setSize(500, 500); setVisible(true); } public static void main(String[] args) { JMenuExample test = new JMenuExample(); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } أنشئنا JPanel وأضفنا العناصر إليها ثم أضفناها إلى JFrame باستخدام الدالة this.add(). عند كتابة نص في الحقل والضغط على زر append يظهر النص على TextArea:
  18. تُمكّنك JList من عرض قائمة من العناصر مع إمكانية وضع شريط تمرير scrollBar. تختلف JList عن باقي الـ Collections إذ أنه لا توجد طريقة مباشرة لتعبئتها مثلًا باستخدام الدالة add(). يجب أولًا قبل تعبئة JList أن نُنشئ مصفوفة array وتعبئتها بالعناصر المطلوبة ومن ثم تقوم بإعطاء المصفوفة للـ JList في الـConstructor. مثال: JList list; String[] listColorNames = { "black", "blue", "green", "yellow", "white" };عند إنشاء الغرض JList نمرر المصفوفة في الـConstructor كما في المثال التالي: list = new JList(listColorNames);يوفر الصف JList تحديد نمط الاختيار من القائمة (اختيار أحادي Single Selection أو اختيار ثنائي Multiple Selection) باستخدام الدالة setSelectionMode كما في المثال التالي: list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);المثال التالي يشرح طريقة التعامل مع JList وطريقة تطبيق حدث action Listener لأخذ قيمة العنصر المحدد من JList. مثلًا مصفوفة تحوي على أسماء عدد من الألوان لكل لون قيمة هي قيمة اللون لنرى كيفية أخذ قيمة عنصر اللون وتلوين الخلفية باللون المحدد: import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import java.awt.*; import java.awt.event.*; public class JMenuExample extends JFrame { JList list; String[] listColorNames = { "black", "blue", "green", "yellow", "white" }; Color[] listColorValues = { Color.BLACK, Color.BLUE, Color.GREEN, Color.YELLOW, Color.WHITE }; Container contentpane; public JMenuExample() { super("List Source Demo"); contentpane = getContentPane(); contentpane.setLayout(new FlowLayout()); list = new JList(listColorNames); list.setSelectedIndex(0); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); contentpane.add(new JScrollPane(list)); list.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { contentpane.setBackground(listColorValues[list .getSelectedIndex()]); } }); setSize(500, 500); setVisible(true); } public static void main(String[] args) { JMenuExample test = new JMenuExample(); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }عند اختيار اللون Blue مثلًا: كيف أضيف عناصر إلى JList في جافا swing؟
  19. تعتبر Border Layout أحد النماذج التي تُرتب وفقها العناصر في مكتبة awt في جافا، والتي تأخذ خمس جهات لتموضع العناصر بداخلها : NORTH, SOUTH, EAST, WEST, CENTER غالبًا تُستخدم عند إنشاء تطبيقات تحتوي على قائمة في الأعلى ومساحة عمل في الوسط وقوائم جانبية. لإنشاء Border Layout نقوم بإنشاء غرض من الصف Border Layout كما في الشيفرة التالية: BorderLayout brLayout = new BorderLayout();يجب عمل تضمين import للمكتبة awt.BorderLayout كالتالي: import java.awt.BorderLayout;لتوضيح كيفية تموضع العناصر في Border Layout الشكل التالي: لنفرض أننا نريد عمل تطبيق يحوي على قائمة menu في الأعلى و Text Area في الوسط والتي ستمثل مساحة العمل. في الأسفل سيكون لدينا statusBar وعلى الجانبين قائمتين عموديتين بمجموعة عناصر. سيكون المثال على الشكل التالي: import java.awt.BorderLayout; import javax.swing.*; public class JMenuExample { public static void main(String[] args) { JFrame frame = new JFrame("BorderLayoutExample"); BorderLayout brLayout = new BorderLayout(); JPanel panel =new JPanel(new BorderLayout()); JMenuBar mb = new JMenuBar(); JMenu m1 = new JMenu("File"); JMenu m2 = new JMenu("Edit"); JMenuItem mItem1 = new JMenuItem("New"); JMenuItem mItem2 = new JMenuItem("Save"); JMenuItem mItem3 = new JMenuItem("Save As"); JMenuItem mItem4 = new JMenuItem("Close"); JTextArea txtArea = new JTextArea("Work area"); JButton b1 = new JButton("East Menu"); JButton b2 = new JButton("West Menu"); JLabel statusBar = new JLabel("statusBar"); m1.add(mItem1); m1.add(mItem2); m1.add(mItem3); m1.add(mItem4); mb.add(m1); mb.add(m2); panel.add(mb, BorderLayout.NORTH); panel.add(txtArea, BorderLayout.CENTER); panel.add(b1, BorderLayout.EAST); panel.add(b2, BorderLayout.WEST); panel.add(statusBar, BorderLayout.SOUTH); frame.add(panel); frame.setSize(500, 500); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } كيف أستخدم border layout في جافا awt؟
  20. توفّر مكتبة Swing مجموعة من العناصر Controls مثل JMenu التي تقوم بإنشاء قوائم أساسية وفرعية في تطبيقات جافا. لتتمكن من استخدام الصفين JMenu و JMenuItem قم بعمل import لهما كما في المثال التالي: import javax.swing.JMenu; import javax.swing.JMenuItem;لعمل قوائم يجب إنشاء قوائم أساسية JMenu ومن ثم قوائم فرعية JMenuItem، لنقم بعمل قائمتين أساسيتين File, Edit وقائمة فرعية تحوي 4 قوائم (New, Save, Save As, Close). يجب قبل كل شيء أن نقوم بتهيئة واجهة التطبيق بإضافة عنصر JFrame والذي سيحوي بداخلة كل عناصر التطبيق. لإضافة القائمة إلى JFrame نقوم بإنشاء شريط JMenuBar ومن ثم إضافة القائمة إليها. مثال: import java.awt.BorderLayout; import javax.swing.*; public class JMenuExample { public static void main(String[] args) { JFrame frame = new JFrame("JMenuExample"); JPanel panel =new JPanel(new BorderLayout()); JMenuBar mb = new JMenuBar(); JMenu m1 = new JMenu("File"); JMenu m2 = new JMenu("Edit"); JMenuItem mItem1 = new JMenuItem("New"); JMenuItem mItem2 = new JMenuItem("Save"); JMenuItem mItem3 = new JMenuItem("Save As"); JMenuItem mItem4 = new JMenuItem("Close"); m1.add(mItem1); m1.add(mItem2); m1.add(mItem3); m1.add(mItem4); mb.add(m1); mb.add(m2); panel.add(mb, BorderLayout.NORTH); frame.add(panel); frame.setSize(500, 500); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } لاحظ أن عنصر JMenuBar هو الذي قمنا بإضافته إلى JFrame والذي يحوي بداخله القوائم الأساسية والقائمة الفرعية. كيف أنشئ قائمة menu في جافا باستخدام swing؟
  21. يمكن عكس ترتيب عناصر مصفوفة بسهولة وذلك باستخدام الدالة reverse، توجد الدالة في الصف Collection وهي دالة static ويمكن لأي صف يرث من الصف Collection أن يقوم باستخدام الدالة reverse java.util.Collections.reverse()يكون تعريف الدالة في الصف Collection كالتالي: public static void reverse(List<?> list) لنقم بإنشاء مصفوفة قائمة ArrayList وتعبئتها بالعناصر A,B,C,D,E ثم تطبيق الدالة reverse عليها وطباعة النتيجة: public static void main(String[] args) { // create array list object ArrayList arrlst = new ArrayList(); // populate the list arrlst.add("A"); arrlst.add("B"); arrlst.add("C"); arrlst.add("D"); arrlst.add("E"); System.out.println("The initial list is :"+arrlst); // reverse the list Collections.reverse(arrlst); System.out.println("The Reverse List is :"+arrlst); }ستكون النتيجة كالتالي: كيف أعكس عناصر قائمة ArrayList في جافا؟
  22. لإظهار محتوى ملف في linux command line نستخدم الأمر cat وهو مشتق من كلمة catenate. يقوم الأمر بقراءة البيانات من الملفات ومن ثم إظهار محتواها، الأمر cat هو من أكثر الأوامر استخدامًا في لينكس حيث يمكن استخدامه إما لإظهار الملفات النصية، أو نسخ ملف نصي لمستند جديد، أو إضافة محتوى ملف نصي إلى نهاية محتوى ملف نصي آخر (تضمين ملفين). لإظهار نص من ملف بكل سهولة باستخدام الأمر cat فقط قم بكتابة اسم الملف الذي تريد إظهاره مع اللاحقة بعد الأمر cat كما في المثال التالي: cat mytext.txtسيقوم الأمر بقراءة الملف النصي وطباعة المحتوى على الشاشة، في حال كان محتوى الملف طويل جدًا سوف ترى القسم الأخير من الملف فقط. في حال رغبتك بقراءة المستند بشكل صفحات page-by-page أو عمل شريط تمرير scroll back and forth يمكنك استخدام الـpager أو الواجهة viewer مثل pg, more or less في حال قمت بكتابة أكثر من اسم ملف بعد الأمر cat فسيقوم الأمر بإظهار محتوى الملفات واحد تلو الآخر. cat mytext.txt mytext2.txtكيف أطبع أو أُظهر محتوى ملف في Linux Commands؟
  23. يُستخدم الأمر mv في لينكس لإعادة تسمية الملفات أو المجلدات اعتمادًا على كيفية استخدامها، يمكن أيضًا استخدام الأمر mv لنقل الملف من مجلد لآخر. لإعادة تسمية ملف نقوم بكتابة الأمر التالي: [me@linuxbox me]$ mv filename1 filename2نكتب الاسم الحالي للملف ومن ثم الاسم الجديد. لنقل ملف إلى مجلد آخر directory نكتب الأمر التالي: [me@linuxbox me]$ mv file... directoryهنا أمثلة عن كيفية استخدام الأمر mv والخيارات: الأمرmv file1 file2 في حال كون الملف file2 غير موجود إذًا سيتم إعادة تسمية الملف file1 بـfile2 أما في حال وجود الملف file2 فسيتم استبدال محتوى الملف file2 بمحتوى الملف file1.الأمرmv -i file1 file2 لا يختلف هذا الأمر عن الأمر أعلاه بيد أن إضافة الخيار "i" يقوم في حال وجود الملف file2 بإخبار المستخدم بأن هناك عملية استبدال لمحتوى الملف file2 بمحتوى الملف file1.الأمرmv file1 file2 file3 dir1 الملفات file1,file2,and file3 تُنقل إلى المجلد dir1، أما في حال كون المجلد dir1 غير موجود سيقوم الأمر mv بإظهار خطأ.الأمرmv dir1 dir2 في حال كون المجلد dir2 غير موجود سيعاد تسمية المجلد dir1 بـ dir2، أما في حال وجود المجلد dir2 يٌنقل المجلد dir1 إلى داخل المجلد dir2.
  24. يُستخدم الأمر chmod لتغيير الصلاحيات كالقراءة والكتابة والتنفيذ على الملفات files أو المجلدات directories. لاستخدامها قم بتحديد الصلاحية أو الإذن المطلوب والملف أو المجلد الذي تريد تعديله. كيف نحدد الأذونات permissions؟ يمكن بسهولة تصور إعدادات الأذونات على أنها سلسلة من البتات series of bits سأعرض بعض الأمثلة لفهم كيف يتم تحديد الأذونات، إن كل ثلاث بتات تحدد بـ rwx أي write, read, and execute (كتابة، قراءة، تنفيذ) مثال: rwx rwx rwx = 111 111 111 rw- rw- rw- = 110 110 110 rwx --- --- = 111 000 000 and so on... rwx = 111 in binary = 7 rw- = 110 in binary = 6 r-x = 101 in binary = 5 r-- = 100 in binary = 4 في حال كان البت المقابل للحرف هو 1 هذا يعني أن الأذن مسموح وأما 0 فهو غير مسموح. ولكن لماذا توجد ثلاث مجموعات لكل سلسلة؟ الجواب هو أنه كل مجموعة تحدد لنوع مستخدم معين وهي ثلاث أنواع (owner, group, and other)، على سبيل المثال إن كنت تريد جعل ملف معين أن يكون له صلاحية للقراءة والكتابة من قبل صاحب الملف owner وأن تجعل الملف يبقى مخفيًا أو خاص عن البقية others سيكون الأمر كالتالي: [me@linuxbox me]$ chmod 600 some_fileهنا أشهر القيم التي تستخدم لتحديد الصلاحيات على الملفات والمجلدات: 777 (rwxrwxrwx) لا قيود على الأذونات، أي شخص يمكنه عمل أي شيء، عمومًا هذا وضع غير مرغوب فيه.755 (rwxr-xr-x) صاحب الملف يمكنه القراءة والكتابة وتنفيذ الملف، الآخرين يمكنهم قراءة وتنفيذ الملف (هذه الإعدادت شائعة للبرامج التي تستخدم من قبل جميع المستخدمين.700 (rwx------) صاحب الملف فقط من يحق له التعديل على الملف قراءة، كتابة وتنفيذ، ولا أحد آخر له الصلاحية بذلك (هذه الإعدادات مفيدة للبرامج التي يستخدمها صاحب الملف owner فقط ويجب أن تبقى محجوبة عن الآخرين.666 (rw-rw-rw-) كل المستخدمين يمكنهم القراءة والكتابة على الملف.644 (rw-r--r--) صاحب الملف يمكنه القراءة والكتابة على الملف أما الآخرين فيمكنهم القراءة فقط هذا إعداد شائع للملفات التي يجب أن تتغير من قبل صاحب الملف فقط.600 (rw-------) صاحب الملف يمكنه القراءة والكتابة فقط على الملف والآخرين ليس لديهم أي صلاحيات لذلك (هذا إعداد شائع للملفات التي يريد صاحب الملف أن يبقيها خاصة privateملاحظات: الصلاحية الخاصة بالتنفيذ execute تكون فعالة على البرامج التنفيذية أي التي تحتوي على شيفرات برمجية.لا يوجد لاحقة معينة للملفات التنفيذية في لينكس مثل ويندوز الذي ينفرد بلاحقة واحد للملفات التنفيذية وهي .exe
  25. ليس هنالك فرقًا حقيقيًا بين التعريفين يمكنك تعرف المصفوفة إما بكتابة القوسين قبل prefixing أو بعد suffixing اسم المصفوفة. الفرق يظهر في حال قمت بتعريف أكثر من مصفوفة على سطر واحد مثال: int a[], b; // first is int array, second is just int variable قمنا هنا بوضع القوسين بعد اسم المصفوفة أي أن أي متغير آخر سيتم تعريفه بعدها سيعتبر متغير عادي وليس مصفوفة. أما في حال وضع القوس قبل اسم المصفوفة فإن جميع المتغيرات التي تكتب بعدها ستعتبر مصفوفة أيضًا ما لم يسبقها نوع جديد للمتغير مثال: int[] c, d; // both c and d are integer array
×
×
  • أضف...