Lujain Maaz
-
المساهمات
344 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
27
إجابات الأسئلة
-
إجابة Lujain Maaz سؤال في كيف أطبع سلسلة من محارف characters في Swift؟ كانت الإجابة المقبولة
يوجد عدّة طرق لطباعة المحارف في مصفوفة char، الطريقة الأولى باستخدام حلقة تكرار foreach والخاصية .characters كما في المثال التالي:
for character in "Dog!".characters { print(character) } طريقة أخرى باستخدام string casting:
let catCharacters: [Character] = ["C", "a", "t", "!"] let catString = String(catCharacters) print(catString) // prints "Cat!"كيف أطبع سلسلة من محارف characters في Swift؟
-
إجابة Lujain Maaz سؤال في ما هو Facebook Graph API؟ كانت الإجابة المقبولة
Facebook graph API هو وسيلة أساسية للحصول على المعلومات من منصة فيسبوك على تطبيقك أي أنه يُستخدم للاستعلام عن البيانات أو نشر أي منشور جديد أو إدارة الإعلانات وتحميل الصور ومجموعة متنوعة من المهام الأخرى التي قد يحتاج تطبيقك القيام بها.
تتألف المعلومات المتمثلة في Facebook Graph من :
العقد nodes وهي "الأشياء" مثل المستخدم، صورة، صفحة، تعليق.
الحواف edges وهي الصلات بين تلك "الأشياء" مثل صور الصفحة أو التعليقات على صورة.
الحقول fields وهي المعلومات عن تلك الأشياء مثل عيد ميلاد الشخص أو اسم الصفحة.
يمكنك الاطلاع على التوثيق الخاص بـ Facebook Graph API والقواعد Syntax لكيفية جلب المعلومات باستخدام Graph API Explorer
-
إجابة Lujain Maaz سؤال في كيف أكتب وأقرأ من ملف نصي باستخدام لغة Swift؟ كانت الإجابة المقبولة
توفر Swift العديد من الطرق للتعامل مع الملفات وتختلف هذه الطرق بحسب نوع إصدار Swift الذي تعمل عليه.
يمكن استخدام NSFileManager وهو عبارة عن صف class يحوي على مجموعة من الدوال للقراءة والكتابة على الملفات.
طريقة أخرى أكثر شيوعًا في الاستخدام للكتابة على الملفات في Swift 1.x باستخدام الدالة WriteToFile. حيث يتم تمرير مسار الملف الذي تريد الكتابة عليه على الشكل التالي:
let file = "file.txt" if let dirs : [String] = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as? [String] { let dir = dirs[0] //documents directory let path = dir.stringByAppendingPathComponent(file); let text = "some text" //writing text.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding, error: nil);للقراءة من ملف يتم استخدام contentsOfFile وتمرير مسار الملف الذي تريد القراءة منه كما في المثال التالي:
//reading let text2 = String(contentsOfFile: path, encoding: NSUTF8StringEncoding, error: nil)في إصدار Swift 2.0 يجب وضع error handling do / catch:
let file = "file.txt" //this is the file. we will write to and read from it let text = "some text" //just a text if let dir : NSString = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true).first { let path = dir.stringByAppendingPathComponent(file); //writing do { try text.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding) } catch {/* error handling here */} //reading do { let text2 = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding) } catch {/* error handling here */} }كيف أكتب وأقرأ من ملف نصي باستخدام لغة Swift؟
-
إجابة Lujain Maaz سؤال في كيف أطبع نوع المتغير أو نوع الصف class في Apple Swift؟ كانت الإجابة المقبولة
لطباعة نوع المتغير في Swift يمكنك استخدام التعبير post-fix self expression للوصول إلى نوع المتغير أو نوع القيمة. على سبيل المثال someClass.self تُرجع اسم الصف نفسه لأن الصف هو نوع بحد ذاته.
يمكن أيضًا استخدام التعبير أو الخاصية dynamicType للوصول إلى نوع القيمة في run-time كما في المثال التالي:
class PureSwiftClass { } var myvar0 = NSString() // Objective-C class var myvar1 = PureSwiftClass() var myvar2 = 42 var myvar3 = "Hans" print( "String(myvar0.dynamicType) -> \(myvar0.dynamicType)") print( "String(myvar1.dynamicType) -> \(myvar1.dynamicType)") print( "String(myvar2.dynamicType) -> \(myvar2.dynamicType)") print( "String(myvar3.dynamicType) -> \(myvar3.dynamicType)") استخدام التعبير post-fix self expression:
print( "String(Int.self) -> \(Int.self)") print( "String((Int?).self -> \((Int?).self)") print( "String(NSString.self) -> \(NSString.self)") print( "String(Array<String>.self) -> \(Array<String>.self)")كيف أطبع نوع المتغير أو نوع الصف class في Apple Swift
-
إجابة Lujain Maaz سؤال في كيف أغيّر ترتيب عناصر مصفوفة عشوائيًا في Swift؟ كانت الإجابة المقبولة
يوجد عدّة طرق لتغيير ترتيب عناصر في مصفوفة بشكل عشوائي في Swift، الطريقة الأولى هي باستخدام Shuffle كـ دالة method.
اكتب الشيفرة التالية:
func shuffle<C: MutableCollectionType where C.Index == Int>(var list: C) -> C { let c = count(list) if c < 2 { return list } for i in 0..<(c - 1) { let j = Int(arc4random_uniform(UInt32(c - i))) + i swap(&list[i], &list[j]) } return list } shuffle([1, 2, 3, 4, 5, 6, 7, 8]) // e.g., [6, 1, 8, 3, 2, 4, 7, 5] shuffle(["hello", "goodbye", "ciao"]) // e.g., ["ciao", "goodbye", "hello"]الطريقة الثانية باستخدام (extension (shuffle as a mutating array method
اكتب الشيفرة التالية:
extension Array { mutating func shuffle() { if count < 2 { return } for i in 0..<(count - 1) { let j = Int(arc4random_uniform(UInt32(count - i))) + i swap(&self[i], &self[j]) } } } var numbers = [1, 2, 3, 4, 5, 6, 7, 8] numbers.shuffle()الطريقة الثالثة باستخدام (extension (shuffle as a non-mutating array method
اكتب الشيفرة التالية:
extension Array { func shuffled() -> [T] { if count < 2 { return self } var list = self for i in 0..<(list.count - 1) { let j = Int(arc4random_uniform(UInt32(list.count - i))) + i swap(&list[i], &list[j]) } return list } } let numbers = [1, 2, 3, 4, 5, 6, 7, 8] let mixedup = numbers.shuffled() // e.g., mixedup == [6, 1, 8, 3, 2, 4, 7, 5]
-
إجابة Lujain Maaz سؤال في ما الفرق بين ‘let’ و ‘var’ في Apple Swift ؟ كانت الإجابة المقبولة
ببساطة "let" تُعرّف متغير ثابت constant أي لا يمكن تغيير قيمته بعد إعطاءه قيمة مثال:
let myVariable= 42بينما "var" تعرف متغير عادي:
var myVariable= 42أي أنه في حال رغبتك بتخزين قيم في متغيرات ولا تريد أن يحدث عليها أي تغير فيما بعد عليك أن تُعرّفها كمتغيرات "let"
واستخدم المتغيرات "var" فقط عندما تكون القيم المخزنة بها ستتغير لاحقًا.
-
إجابة Lujain Maaz سؤال في كيف أتأكد من وجود عنصر في مصفوفة باستخدام لغة البرمجة swift؟ كانت الإجابة المقبولة
تحتوي Swift على الدالة ()Contains والتي تُرجع قيمة منطقية Boolean true or false. في حال إيجاد العنصر في المصفوفة تُرجع قيمة true وفي حال عدم وجوده ترجع قيمة false.
للبحث عن عنصر معين في مصفوفة اكتب الشيفرة التالية:
var elements = [1,2,3,4,5] if elements.contains(5) { // any matching items are in results } else { // not found }في الإصدار السابق لـ Swift 2.0 تُكتب ()Contains بالطريقة التالية:
var elements = [1,2,3,4,5] if contains(elements, 5) { println("yes") }في حال كانت المصفوفة من نوع object وتريد معرفة فيما إذا كانت المصفوفة تحتوي على object معين أم لا استخدم الدالة ()ContainsObject.
مثلًا مصفوفة من نوع imageFile:
class imageFile { var fileName = String() var fileID = Int() } var images : [imageFile] = []إنشاء غرضين 2 objects وتعبئتهما في المصفوفة:
var aImage = imageFile() aImage.fileName = "image1.png" aImage.fileID = 300 images.append(aImage) aImage = imageFile() aImage.fileName = "image1.png" aImage.fileID = 202 images.append(aImage)التأكد من وجود الغرض aImage ضمن المصفوفة:
if (images as NSArray).containsObject(aImage) { // Do something print("yes"); } -
إجابة Lujain Maaz سؤال في ماذا تعني optional في Swift وكيف تستخدم؟ كانت الإجابة المقبولة
تعني optional في Swift أن المتغيّر يمكن أن يحوي على قيمة وقد لا يحوي. على خلاف لغات البرمجة الأخرى إذ أنه يجب إعطاء قيمة للمتغير فيها حتى ولو كانت قيمة string فارغة.
يُعرّف المتغير في swift على أنه متغيّر اختياري optional بوضع علامة استفهام "؟" بعد نوع المتغير مثال:
var myOptionalString:String? = "Hello"متى يكون استخدام القيمة optional مفيد؟
1- في حال كانت الخاصية غير موجودة عند كل عناصر الفئة المعينة مثلًا خاصية الاسم الثاني أو middleName.
2- عندما يمكن لدالة ما أن تُرجع قيمة أو لا شيء مثل الدالة التي تقوم بالبحث عن عنصر ما في مصفوفة.
3- عندما يكون هناك إمكانية للدالة أن ترجع نتيجة أو خطأ او لا شيء.
ماذا تعني optional في Swift وكيف تستخدم؟
-
إجابة Lujain Maaz سؤال في كيف أحوّل string إلى double في Apple Swift؟ كانت الإجابة المقبولة
في الإصدار ما قبل Swift 2.0 للتحويل من string إلى double في Swift استخدم الطريقة التالية:
(swiftString as NSString).doubleValueفي التحديث Swift 2.0 استخدام الدالة Float كما في المثال التالي:
let myDouble = Float(myString)ويمكن استخدام الدالة ()toDouble كما في الشيفرة التالية:
var myString = "4.2" var myDouble = myString.toDouble()طريقة استخدام NSNumberFormatter للتحويل من String إلى double:
let formatter = NSNumberFormatter() formatter.locale = NSLocale(localeIdentifier: "fr_FR") let double = formatter.numberFromString("100,25") print(double)طريقة أخرى باستخدام extension String:
extension String { func toDouble() -> Double? { return NSNumberFormatter().numberFromString(self)?.doubleValue } } -
إجابة Lujain Maaz سؤال في كيف أنشئ واجهة تطبيق في java swing؟ كانت الإجابة المقبولة
تُعتبر مكتبة 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:
-
إجابة Lujain Maaz سؤال في ما هو Bots في تلغرام؟ كانت الإجابة المقبولة
يُعتبر تطبيق telegram أحد تطبيقات المحادثات الذي أخذ بالانتشار الكبير في الآونة الأخيرة نظرًا للميزات الجديدة التي يتمتع بها كالسرعة وميزة Telegram Bots بالإضافة لميزة العدد غير المحدود للأعضاء في المجموعة الواحدة Group ما جعله يتفوق على نظيره Whatsapp.
يمكن تعريف telegram bots بأنها برمجيات تشبه لحد ما البرامج الذكية كالروبوت، حيث أنها تستجيب لأوامر معينة من المستخدم لتقديم خدمات تمكّن المشتركين من الاستفادة منها عن طريق إضافة حساب الـ bot بواسطة البحث عنه واختياره ليظهر في قائمة المحادثة ومن ثم التواصل معه بواسطة أوامر. الخدمات التي تقدمها telegram bots معرفة أسعار العملات وحالات الطقس والكثير.
مثلًا BotForTelgram هو أحد الـ bot المشهورة في تلغرام وهو روبوت يقوم بالاستجابة لعدة أوامر مثل أمر !help لعرض قائمة بجميع الأوامر المستخدمة في تطبيق تلغرام.
والأمر !Weather الذي يمكنك من معرفة حالة الطقس في مدينة معينة.
ماهو bots في تلغرام؟
-
إجابة Lujain Maaz سؤال في كيف أُشفِّر نصوص غير قابلة للرجوع في C#؟ كانت الإجابة المقبولة
توفر تقنية 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
-
إجابة Lujain Maaz سؤال في كيف أنشئ تطبيق Java Applet باستخدام eclips؟ كانت الإجابة المقبولة
يتم إنشاء تطبيق 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!")); } }
-
إجابة Lujain Maaz سؤال في كيف أتعامل مع Calendar في Asp.Net؟ كانت الإجابة المقبولة
يُستخدم العنصر 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؟
-
إجابة Lujain Maaz سؤال في كيف أعدّل على cookie باستخدام JQuery؟ كانت الإجابة المقبولة
يمكن تغيير قيمة 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؟
-
إجابة Lujain Maaz سؤال في كيف أستخدم الدالة append لـJTextArea في جافا swing؟ كانت الإجابة المقبولة
عليك أولًا أن تقوم بتطبيق حدث 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:
-
إجابة Lujain Maaz سؤال في كيف أضيف عناصر إلى JList في جافا swing؟ كانت الإجابة المقبولة
تُمكّنك 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؟
-
إجابة Lujain Maaz سؤال في ما الفرق بين []a و a[] في جافا؟ كانت الإجابة المقبولة
ليس هنالك فرقًا حقيقيًا بين التعريفين يمكنك تعرف المصفوفة إما بكتابة القوسين قبل prefixing أو بعد suffixing اسم المصفوفة.
الفرق يظهر في حال قمت بتعريف أكثر من مصفوفة على سطر واحد مثال:
int a[], b; // first is int array, second is just int variable قمنا هنا بوضع القوسين بعد اسم المصفوفة أي أن أي متغير آخر سيتم تعريفه بعدها سيعتبر متغير عادي وليس مصفوفة.
أما في حال وضع القوس قبل اسم المصفوفة فإن جميع المتغيرات التي تكتب بعدها ستعتبر مصفوفة أيضًا ما لم يسبقها نوع جديد للمتغير مثال:
int[] c, d; // both c and d are integer array -
إجابة Lujain Maaz سؤال في كيف أبعثر ترتيب عناصر List بشكل عشوائي في جافا؟ كانت الإجابة المقبولة
تستخدم الدالة Shuffle لعمل ترتيب عشوائي لعناصر مجمع collection مثل المصفوفات arrays والقوائم List.
يتم استدعاء الدالة shuffle من الصف Collections وهي دالة static، لنقم مثلًا بإنشاء قائمة List ومن ثم تعبئتها بمجموعة عناصر ثم نقوم بتطبيق عملية تغيير ترتيب العناصر باستخدام الدالة shuffle:
public static void main(String args[]) { // create array list object List arrlist = new ArrayList(); // populate the list arrlist.add("A"); arrlist.add("B"); arrlist.add("C"); System.out.println("Initial collection: "+arrlist); // shuffle the list Collections.shuffle(arrlist); System.out.println("Final collection after shuffle: "+arrlist); } بعد الترجمة Compile ستظهر النتيجة كالتالي:
Initial collection: [A, B, C] Final collection after shuffle: [C, A, B] -
إجابة Lujain Maaz سؤال في ماذا تعني final في جافا؟ كانت الإجابة المقبولة
تستخدم الكلمة المفتاحية final لجعل المتغيرات ثابتة constant أي لا يمكن تغيير قيمتها بعد إعطائها قيمة أول مرة.
يمكن إعطاء قيمة للمتغير الثابت final أثناء تعريفه أو في الـconstructor.
يمكن أيضًا استخدام الكلمة المفتاحية final مع الدوال methods لحمايتها من عملية إعادة التعريف overriding (في جافا لا يمكنك عمل override لدالة ثابتة final method).
تستعمل الكلمة المفتاحية final أيضًا مع الصفوف classes وذلك لجعلها غير قابلة للوراثة من قبل صفوف أخرى (في جافا لا يمكن الوراثة من صف ثابت final class)،.
متى نكون بحاجة لعمل صف ثابت final class؟
في حال كنا لا نرغب بوراثة أي من الدوال أو المتغيرات في الصف، أي لا نرغب بالتعديل عليها أو إعادة استخدامها. لنقم بإنشاء صف ثابت ونقوم بالوراثة منه ونرى ما سيحدث:
final class Father { public final void getSurname(){ System.out.println("Sorry son, you cannot change your surname"); } } class Son extends Father { } عند القيام بعملية ترجمة compile لهذين الصفين سيظهر خطأ في الترجمة Compile Time Error "The Type Son cannot subclass the final class Father"
-
إجابة Lujain Maaz سؤال في كيف أنشئ directory جديد في لينكس shell command؟ كانت الإجابة المقبولة
يُستخدم الأمر mkdir لإنشاء مجلدات directories Unix/ Linux جديدة أو بمعنى آخر sub-directories.
لإنشاء دليل جديد وليكن مثلًا mydirc نكتب:
[me@linuxbox me]$ mkdir mydircلكن لينجح ذلك يجب أن تملك صلاحية لإنشاء sub-directory في الدليل الحالي الخاص بك.
يمكن أيضًا إنشاء عدة مجلدات directories في آن معًا باستخدام الأمر mkdir لنقم مثلًا بإنشاء 3 مجلدات ضمنية sub-directories (memos, letters, and e-mail) في دليل العمل الحالي working directory:
mkdir memos letters e-mailيمكنك أيضًا الأمر mkdir من إنشاء عدة مستويات من المجلدات multiple levels of subdirectories في أمر واحد مثلًا لنقوم بإنشاء عدة مجلدات ضمنية /home/joe/customer/acm/foo/ba
mkdir -p /home/joe/customer/acme/foo/barلاحظ عدد الأسطر التي اُختصرت في حين قمنا بإنشاء المجلدات بالطريقة التالية:
cd /home/joe mkdir customer cd customer mkdir acme cd acme mkdir foo cd foo mkdir barكيف أنشئ directory جديد في لينكس shell command؟
-
إجابة Lujain Maaz سؤال في كيف أعرض جميع الملفات الموجودة في working directory في موجه أوامر لينكس؟ كانت الإجابة المقبولة
يقوم الأمر ls بإظهار قائمة الملفات والمجلدات directories في الدليل الحالي أي يظهر محتوى الدليل الحالي، يمكن استخدام الأمر ls بعدّة طرق وهنا بعض الأمثلة:
الأمر ls لوحده يقوم بإظهار قائمة الملفات في دليل العمل الحالي. الأمر ls /bin يظهر قائمة الملفات في الدليل bin (أي دليل معين تريد اظهار محتواه تقوم بكتابة اسه بعد الأمر ls). الأمر ls -1 يظهر قائمة الملفات في دليل العمل الحالي بصيغة طويلة long format. الأمر ls -1 /etc /bin يظهر قائمة الملفات في الدليل bin والدليل etc بصيغة طويلة long format. الأمر ls -la يظهر قائمة جميع الملفات بما فيها الملفات المخفية في الدليل الأب parent لدليل العمل الحالي working directory بصيغة طويلة long format. $ ls -1 bin boot cdrom dev etc home initrd initrd.img libللمزيد عن استخدام الأمر ls انظر الرابط أدناه:
كيف أعرض جميع الملفات الموجودة في working directory في موجه أوامر لينكس؟
-
إجابة Lujain Maaz سؤال في كيف يمكن عمل ArrayList للقراءة فقط read only في جافا؟ كانت الإجابة المقبولة
يمكن عمل مصفوفة ArrayList أن تكون للقراءة فقط باستخدام الدالة:
Collections.unmodifiableCollection() والتي ترجع متغير غير قابل للتعديل readonly view of Collection أي لا تستطيع أن تقوم بتنفيذ أي عملية تعمل على تغيير المجمع collection مثل عملية الإضافة add او الإزالة remove او التغيير set. وفي حال تطبيق أي تغيير على المصفوفة (collection) سيتم رمي استثناء:
UnsupportedOperationExceptionالطريقة الأكثر شيوعًا في إنشاء مصفوفة غير قابلة للتعديل هي باستخدام الدالة asList في الصف Arrays Class:
Arrays.asList(String{[])والتي تُرجع قائمة List لا يُسمح عليها تطبيق عمليات الإضافة أو الإزالة.
سأعرض مثال عن كيفية جعل ArrayList تصبح مصفوفة أو قائمة للقراءة فقط read only، سأستخدم الدالة asList من الصف Arrays لإنشاء مصفوفة قائمة ArrayList ذات طول ثابت fixed length ومن ثم تغليفها أو تحويلها إلى تجميع غير قابل للتعديل unmodifiable collection لجعلها للقراءة فقط:
public static void main(String args[]) { //creating read only Collection in Java Collection readOnlyCollection = Collections.unmodifiableCollection(new ArrayList<String>()); readOnlyCollection.add("Sydney Sheldon"); //raises UnSupportedOperation exception //making existing ArrayList readonly in Java ArrayList readableList = new ArrayList(); readableList.add("Jeffrey Archer"); readableList.add("Khalid Hussain"); List unmodifiableList = Collections.unmodifiableList(readableList); //add will throw Exception because List is readonly unmodifiableList.add("R.K. Narayan"); //remove is not allowed in unmodifiable list unmodifiableList.remove(0); //set is not allowed in unmodifiable List unmodifiableList.set(0, "Anurag Kashyap"); //creating Fixed Length List from Array in Java List fixedLengthList = Arrays.asList("Mark" , "Twen"); // readOnlyList.add("J.K. Rowling"); //raises Exception fixedLengthList.set(0, "J.K. Rowling"); //allowed that's why not read only list System.out.println(fixedLengthList.get(0)); } كيف يمكن عمل ArrayList للقراءة فقط read only في جافا؟
-
إجابة Lujain Maaz سؤال في كيف أنشئ style في ويندوز فون وأطبقه على العناصر؟ كانت الإجابة المقبولة
يتم ذلك عن طريق الخاصية Resources حيث يتم إنشاء وتحديد التصميم Style وتحديد نوع العنصر الذي نريد تطبيق التصميم عليه في الخاصية TargetType مثلًا TargetType="Button" ثم بعد ذلك يتم بناء Setters في كل وسوم <Setter> يتم تحديد الخصائص التي ستتغير في العنصر مثل الطول، العرض، اللون، لون الخلفية..الخ.
مثال لنقم ببناء تصميم Style على الأزرار Buttons الموجودة في StackPanel:
<StackPanel> <StackPanel.Resources> <Style TargetType="Button" x:Key="ButtonStyle"> <Setter Property="Width" Value="200"/> <Setter Property="Height" Value="100"/> <Setter Property="Margin" Value="4"/> <Setter Property="FontSize" Value="20"/> <Setter Property="Background"> <Setter.Value> <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5"> <GradientStop Color="Blue" Offset="0.0"/> <GradientStop Color="LightBlue" Offset="0.5"/> <GradientStop Color="Navy" Offset="1"/> </LinearGradientBrush> </Setter.Value> </Setter> </Style> </StackPanel.Resources> إنشاء الأزرار وتطبيق التصميم على الزر عن طريق الخاصية Style="StaticResource nameofStyle":
<Button Style="{StaticResource ButtonStyle}" Content="Click Me"></Button> <Button Style="{StaticResource ButtonStyle}" Content="OK"></Button> <Button Style="{StaticResource ButtonStyle}" Content="Cancel"></Button> </StackPanel>
-
إجابة Lujain Maaz سؤال في كيف أنشئ لون متدرج من مجموعة ألوان وأطبقه على عنصر في ويندوز فون؟ كانت الإجابة المقبولة
يمكن إنشاء ألون متدرجة باستخدام LinearGradientBrush وهو عبارة عن صف class يقوم بتلوين منطقة ما بشكل منحدر خطي متدرج linear gradien، تحدد بداية ونهاية الخط بالخاصيتين StatrPoint , EndPoint ، القيمة الافتراضية لنقطة البداية هي (0,0) الزاوية اليسارية العليا من العنصر، القيمة الافتراضية لنقطة النهاية هي (1,1) الزاوية اليمينية السفلى.
يمكن تحديد مجال كل لون باستخدام الخاصية Offset التي تأخذ قيمتها من 0.0 - 1.0 مثلًا في المثال يوجد 4 ألوان (أصفر، أحمر، أزرق، أخضر).
لاحظ قيم الـ Offset لكل لون:
لنقم بتطبيق LinearGradientBrush على عنصر في ويندوز فون وتحديد مجال الألوان وقيمها حيث سنطبق على العنصر Ellips في الخاصية Fill كما في المثال التالي:
<Ellipse HorizontalAlignment="Left" Height="169" Margin="166,82,0,0" Grid.Row="1" Stroke="Black" VerticalAlignment="Top" Width="182" RenderTransformOrigin="-3.386,0.383" ManipulationStarted="Ellipse_ManipulationStarted"> <Ellipse.Fill> <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5"> <GradientStop Color="White" Offset="0.0"/> <GradientStop Color="LightBlue" Offset="0.5"/> <GradientStop Color="Navy" Offset="1"/> </LinearGradientBrush> </Ellipse.Fill>قمت بتحديد 3 ألون White, LightBlue, Navy وقيمة Offset لكل لون والنتيجة:
كيف أنشئ لون متدرج من مجموعة ألوان وأطبقه على عنصر في ويندوز فون؟