• 0
alaadiaa

بعض الأسئلة الأكثر شيوعاً

سؤال

السلام عليكم

هذا الموضوع سيجمع الأسئلة الأكثر شيوعا بخصوص لغة الجافا، لذلك يرجي من كل الاعضاء مراجعة هذه الأسئلة أولا قبل طرح أي سؤال في المنتدى

مفاهيم أساسية:

  • <a href="#jvm">ما هو مفهوم الJVM؟؟</a>
  • <a href="#os">ما هي أنظمة التشغيل التي تعمل عليها الجافا؟؟</a>
  • ما هو الGarbage Collector؟؟
  • ما معنى JRE SDK JDK؟؟
  • كيف أبدأ في برمجة تطبيقات جافا لسطح المكتب؟؟
  • كيف أعمل compile لملف جافا وأشغل البرنامج الناتج باستعمال سطر الأوامر؟؟
  • كيف أستخلص الparameters الموجهة لبرنامجي من خلال سطر الأوامر؟؟
  • ما هي ال keywords الخاصة بالجافا؟؟

مفاهيم عامة:
  • ما هي الأنواع الأساسية في جافا primitives types؟؟
  • هل هناك وجود للpointers في الجافا؟؟
  • كيف أكتب حلقة تكرار باستعمال for؟؟
  • هل توجد for each في الجافا؟؟
  • كيف يمكن معرفة قيم متغيرات البيئة Environment variables؟؟
  • كيف يمكن معرفة إسم المستخدم الذي يشغل البرنامج؟؟
  • كيف يمكن معرفة نظام التشغيل الذي يشتغل فيه البرنامج؟؟
  • كيف يمكن فتح ملف بواسطة البرنامج المرتبط به؟؟
  • كيف يمكن المناداة على المتصفح الإفتراضي وجعله يفتح صفحة ويب معينة؟؟
  • كيف أحصل على لائحة الخطوط الموجودة في النظام؟؟
  • ماذا يعني هذا الخطأ java.lang.OutOfMemoryError: Java heap space؟؟
  • ما فائدة الطريقة toString()؟؟
  • ما هي ال Boxing ، Unboxing ، Wrapper Classes؟؟
  • ما هي ال static import؟؟

التعامل مع المجموعات Collections والمصفوفات Arrays

  • لماذا أحصل على الإستثناء ArrayIndexOutOfBoundsException عند محاولة استرجاع عنصر من المصفوفة؟؟
  • كيف أقوم بترتيب sorting عناصر المصفوفة؟؟

التعامل مع التواريخ
  • كيف أغير شكل طباعة التاريخ؟؟
  • كيف أحصل على تاريخ اليوم؟؟
  • كيف أعرف أن السنة كبيسة؟؟

التعامل مع الجُمَل والحروف

  • الفرق بين String و StringBuffer و StringBuilder؟؟
  • كيف أقارن بين جملتين String؟؟
  • كيف يمكن معرفة نوع متغير char، هل هو حرف أم رقم أم فراغ؟؟
  • كيف يمكن الحصول على مصفوفة char انطلاقا من كائن String؟؟
  • كيف يمكن تقسيم جملة String حسب فاصل ما؟؟

التعامل مع المدخلات والمخارج، الملفات
  • كيف أكتب سطرا داخل ملف نصي؟؟
  • كيف أقرأ محتوى ملف نصي سطرا بسطر؟؟
  • كيف أشغل ملفات الصوت في الجافا؟؟
  • كيف أعرف حجم الpartition التي أعمل فيها؟؟
  • كيف أمسح ملف، أنشئ ملف جديد فارغ، وأتحقق من وجود ملف ما؟؟
  • كيف أحصل على لائحة كل الملفات الموجودة داخل مجلد ما، أو فقط الملفات ذات امتداد معين؟؟
  • كيف أنشئ مجلدا فارغا جديدا؟؟
  • كيف أغير إسم ملف أو مجلد ما؟؟
  • كيف أتعرف على محتوى ملف zip؟؟
  • ما هي ال Serialization؟؟
  • كيفية تخزين ملفات في قاعدة بيانات واسترجاعها

الجافا و XML

الواجهات الرسومية GUI

  • ما فائدة استعمال SwingUtilities.invokeLater(Runnable) وما هو الEDT Event Dispatching Thread؟؟
  • كيف أستعمل JFileChooser لاختيار ملف لفتحه أو للحفظ عليه
  • كيف آخذ صورة لسطح المكتب Screenshot؟؟
  • كيف أملأ JTextArea ابتداء من ملف نصي بكل سهولة؟؟
  • كيفية إظهار صورة عند بداية تشغيل برنامجك بانتظار ظهور النافذة الأساسية؟؟
  • كيف أضيف object من فئة ما غير String إلى JList؟؟
  • JList hacking & customizing
  • Enable sorting in a JTable
  • Filtering rows in a JTable
  • كيف أضيف أو أحذف أسطر وأعمدة من جدول JTable؟؟
  • ما هي مختلف نوافذ الحوار التي توفرها الفئة JOptionPane؟؟
  • كيف أعرف أن مكونا حصل على التركيز focus أو فقده؟؟
  • كيف أظهر قائمة menu عند الضغط بالزر الأيمن للفأرة على مكون ما؟؟
  • كيف أجعل النافذة تظهر في منتصف الشاشة؟؟
  • كيف أجعل واجهة برنامجي متعددة اللغات؟؟
  • الإستماع للأحداث
    • كيف ألتقط أحداث الفأرة؟؟

Java2D

  • كيف يمكن الرسم في الجافا؟؟
  • كيف أرسم أشكال هندسية في الجافا؟؟
  • كيف ألون شكلا ما ب gradient بدل لون موحد؟؟

مفاهيم متقدمة

ربط الجافا بلغات برمجية أخرى

=============================================================

<a name="jvm">ما هو مفهوم الـ JVM ؟</a>

JVM اختصار للكلمات java virtual machine

ومفهوم الآلة الافتراضية ظهر إلى الوجود في لغة جافا

ومبدأ عمله هو منع البرامج التي يقوم بكتابتها المبرمجين

من التكلم مباشرة مع العتاد Hardware بإنشاء طبقة وسيطة بينها وبين البرامج

ألا وهي الآلة الافتراضية

فوائد الآلة الافتراضية تتلخص في

الأمان security

التوافقية مع أكثر من نظام portability

عيوبها

البطء بسبب تعدد الطبقات

<a name="os">ما هي أنظمة التشغيل التي تعمل عليها جافا ؟</a>

ويندوز منذ ويندوز 95 لنيكس بجميع إصداراته سولاريز بإصدارتيه الخاصة بمعالج إنتل والخاصة بمعالج سبارك Sparc

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

59 إجابة على هذا السؤال .

  • 0

كيف أستخلص الـ Parameters الموجهة لبرنامجي من خلال سطر الأوامر؟

يمكن تشغيل برنامج java على النحو التالي:

java MyClass param1 param2 ..paramN

و لو أعدت النظر جيدا للـ class الرئيسية لوجدتها على النحو التالي:

public static void main (String[] args) {  ... }

أي أن الـ Parameters مخزنة في جدول من الـ Strings

و عليه يكفي استخراج محتوى هذا الجدول

المثال التالي قوم بالطباعة على الشاشة الـ Parameters

for (int i = 0; i < args.length; i++) { 
System.out.println(args[i]);
}

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيف أقارن بين جملتين String :

نستعمل الدالة equals على النحو التالي:

String  myFirstString = "arabteam";
String mySecondString = "ARABTEAM";

boolean eq=myFirstSring.equals(mySecondString);

//تحتوي eq على false

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ماهي الأنواع الأساسية في جافا primitive types ؟

boolean byte char short int float long double

مرتبين على حسب حجم كل منهم من اليسار إلى اليمين

تحياتي

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيف يمكن تشغيل ملفات الصوت في الجافا ؟

لتشغيل ملفات الصوت ذات الأمتداد ( wav و Midi و au ) يجب أن نحصل على كائن من نوع AudioClip ومن خلال هذا الكائن نستطيع استدعاء الداله play لتشغيل الملف . ويمكن الحصول على هذا الكائن عن طريق الداله newAudioClip الموجوده في الكلاس Applet .

مثال على تشغيل ملف اسمه a.wav موجود في المسار C:\\java :

// Play Sound Using AudioClip Interface
/ Support only au,wav,midi extension !

import java.applet.AudioClip;
import java.applet.Applet;
import java.net.URL;
import java.net.MalformedURLException;
import javax.swing.JOptionPane;

public class PlaySoundTest
{
public static void main (String args[]) {
try {
AudioClip ac = Applet.newAudioClip(new URL ("file:///C:/java/a.wav"));
ac.play();
JOptionPane.showMessageDialog(null,"Press OK to Stop");
} catch ( MalformedURLException e) {
System.out.println("Inavlid URL");
System.exit(1);
}
}
}

ألداله play تستخدم للتشغيل ، stop للايقاف ، loop للتشغيل وعدم التوقف .

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيف أصنع ملف الـ jar لمشروعي باستخدام eclipse؟

اذهب إلى

File-->Export

ستظهر لك نافذة فيها مجموعة اختيارات اختر java

و من القائمة الفرعية التي تظهر اختر JAR file

و من ثم اضغط على next

تظهر نافذة أخرى

من قسم (Select the resources to export)

قم باختيار مشروعك

و في خانة (Select the export destination)

قم بتحديد مكان وضع الملف الناتج

في هذه الأثناء يمكنك إما الضعط على finish لإنهاء العملية

أو اختيار next لمواصلة اختيار بعض الخصائص (الثانوية)

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيف أبدأ في برمجة تطبيقات جافا لسطح المكتب؟

اذهب إلى الوصلة التالية

http://java.sun.com/...loads/index.jsp

اختار أحدث نسخة موجودة من JDK

اضغط على كلمة download

اختار البيئة التي تعمل عليها

اضغط على مربع الاختيار للموافقة على ترخيص صن

ثم اضغط على continue

ثم نختار تحميل بدون إنترنت offline

وهذا سيقوم بإنزال نسخة تحتفظ بها وتقوم بإنزالها متى أردت

بعد أن نقوم بتثبيت الملف على الجهاز

نقوم باختيار أي IDE للعمل عليه

مثل eclipse

وتستيطيع إنزاله من http://www.eclipse.org

أو netbeans

وتستطيع تنزيله من http://www.netbeans.org/

أو JCreator

وتستطيع تنزيله من http://www.jcreator.com/

أو drjava

وتستطيع تنزيله من http://www.drjava.org

بهذا تكون جاهز لكتابة تطبيقات على لغة جافا

تحياتي

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه علاء الصالحي
إضافة بيئة تطوير
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيف أعمل Compil لملف java باستعمال سطر الأوامر؟

نكتب الأمر javac متبوعا باسم الملف

مثلا

javac arabteam.java

كيف أشغل برنامج جافا بعد عملية compil باستعمال سطر الأوامر؟

بعد عملية الـ compil ينتج ملف يحمل نفس اسم ملف .java و لكن ذو امتداد .class

لتشغيل هذا الملف نكتب الأمر java متبوعا باسم الملف (من دون النقطة و الامتداد)

مثال:

لدينا ملف arabteam.class

نكتب

java arabteam

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيف أستعمل JFileChooser لاختيار ملف لفتحه أو للحفظ عليه

JFileChooser choice  = new JFileChooser();
choice.setFileSelectionMode(JFileChooser.FILES_ONLY);

int res =choice.showOpenDialog(null);

if(res==JFileChooser.CANCEL_OPTION) return;

FilemyFile=choice.getSelectedFile();

هذا الكود يسمح باختيار الملفات فقط

إذا أردت جعله يختار المجلدات أيضا غير

JFileChooser.FILES_ONLY

بـ

FILES_AND_DIRECTORIES

إضافة إلى أن النافذة التي تظهر خاصة بفتح الملفات

لإظهار نافذة الحفظ ضع

showSaveDialog

بدل

getSelectedFile

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

: كيف اكتب حلقة تكرار باستخدام for ؟

الصيغة العامة لـ for كالتالي

for(initialization;condition;operation){
}

كل شيء في for اختياري ماعدا كلمة for والفاصلتين المنقوطتين و القوسين ()

initialization تنفذ مرة واحدة عند بداية for

operation تنفذ كل مرة بعد فحص الشرط

condition يجب أن يكون تعبير ناتجه boolean

تستطيع كتابة أي شيء في الجزيئيتين initialization operation

يستثنى من ذلك تعريف المتغيرات في operation

في حالة وجود أي من القوسين }{ فإنه يجب تواجد الآخر

في حالة عدم وجود هذه الأقواس

فأن التكرار سيكون على جملة واحدة

وهي التي تلي التكرار مباشرة

مثال

for(initialization;condition;operation)
something;

كيف اكتب حلقة غير منتهية باستخدام for ؟

for(;;)

هكذا البرنامج سيستمر في العمل إلى أن تستخدم الكلمة break

بمعنى أصح لا تكتب تعبير في منطقة condition

تحياتي

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أستخدام For Each للوصول الى جميع القيم في مصفوفه

في جافا 1.5 تم عمل جمله for each والتي من خلالها تستطيع الوصول لجميع القيم في المصفوفه بدون الحاجه للتعامل مع الـ Index وزيادته .. حيث يتم التعامل مع بشكل تلقائي ..

الشكل العام :

For(var: collection) { Statements; }

حيث var متغير من نفس نوع المصفوفه collection

مثال لطباعه جميع القيم في مصفوفه باستخدام for each :

int[] a={1,2,3,4,5,6,7,8,9,0};
for(int i : a){
System.out.println(i);
}

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ما معنى JRE SDK JDK

JRE

Java Runtime Environement

هي المكون الأساسي للتمكن من تشغيل برامج مكتوبة بلغةjava يتكون أساسا من Java Virtual Machine

القادر على تنفيذ الـ byte-code

SDK

Standard Development Kit

المكون الموجه أساسا للمبرمج يحتوي على مترجم java وعدة برامج أخرى مفيدة

JDK

Java Development Kit

الاسم القديم لـ SDK تم اعتماد التسمية الجديدة ابتداء من الإصدار 1.2.2

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ما هو الـ Garbage Collector

GC هو مدير ألى للذاكره ،يقوم بتحرريها من غير الحاجه الى أن يقوم المبرمج بتحرير الذاكره التي قد حجزها باستخدام المعامل New ، فقط كل ما عليك هو حجز الذاكره ، ويتولى الـ GC مهمه تحرير هذه الذاكره ، حيث يقوم بتحرير أي كائن في الذاكره لا يوجد له Reference . (أي كائن تم أستدعاء داله Finalization ) .

ويمكن أن تعطي تلميح للـ RunTime Engine بأن يقوم بتشغيل الـ GC ، ولكن قد يتجاهل الـ RunTime Engine هذا الطلب ، المهم بعد أن يعمل الـ GC سوف يحرر أي كائن في الذاكره لا يوجد له Reference .. يمكن طلب الـ GC عن طريق :

System.gc();

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيف يمكن استخراج الكود المصدري (ملف .java) من ملف مترجم (.class)

يمكن ذلك باستعمال JAD -Java decompiler-

يمكن تحميل نسخة منه من الموقع الرسمي له

http://www.kpdus.com/jad.html

و من ثم استعمل سطر الأوامر لكتابة

jad ClassName.class

سينتج ملف نصي بامتداد JAD

قم بتغيير الامتداد من JAD إلى JAVA

لدى استعمال JAD في Windows XP تظهر رسالة خطأ مفادها أن لا وجود لبرنامج بهذا الاسم

المشكل يكمن في أن مسار المجلد الذ يحتوي البرنامج غير موجود في المتغير PATH

هناك حلان:

إما بإضافة مسار المجلد إلى الـ path(طريقة الإضافة)

أو بوضع البرنامج في أحد مجلدات النظام (أو المجلدات الموجودة ضمن الـ Path) مثل System32

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيف أكتب سطرا داخل ملف نصي ؟

أولا نحتاج إلى إضافة الأسطر التالية إلى منطقة Import

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

و إليكم الكود

String str = new String("ArabTeam2000");
// السطر الذي نريد كتابته في الملف
String fileName = new String("c:\\file.txt");
// مسار الملف الذي نريد الكتابة فيه
try {
// نستعمل try لإمكانية وجود أخطاء لدى التعامل مع الملفات
FileWriter out = new FileWriter(fileName);
BufferedWriter bw = new BufferedWriter(out);
bw.write(str);
// نكتب السطر
bw.newLine();
// و نذهب إلى السطر الموالي
bw.close();
out.close( );
} catch(IOException er) {
System.out.println( "Error : " + er );

// في حالة وجود أخطاء نقوم بإظهار نوع الخطأ
}

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيف أنشأ ملف Jar لمشروعي

نقوم بإنشاء ملف MANIFEST مهمته إخبار الـ Jar ما هي الـ Class الرئيسية

و ليكن اسمه MANIFEST.MF

بنيته القاعدية كالتالي

Main-Class: PrincipalClass

حيث أن PrincipalClass هو اسم الـ Class الرئيسي في مشروعك (دون إضافة .class)

يجب إضافة سطر فارغ نهاية الملف

و الآن نستعمل الأمر JAR

ملاحظة: يجب أن يكون مجلد الـ bin الخاص بالـ Jdk ضمن المتغير Path

لمعرفة كيفية إضافته هنا

ندخل إلى cmd

و من ثم ندخل إلى مجلد المشروع

و نكتب

jar cvfm jarName.jar MANIFEST.MF *.class

مبروك ملف الـ Jar جاهز

لتفاصيل أكثر عن خصائص إنشاء الـ jar

اكتب في Cmd

كود

jar -?

ملف فيديو لشرح الطريقة

******************************************

في النسخة السادسة من الJDK لم يعد ضروريا تمرير ملف manifest من أجل تحديد الMain-Class، يمكن عمل ذلك مباشرة من سطر الأوامر باستخدام الخيار e

jar cfe app.jar MyMainClass *.class

حيث app.jar هو ملف jar الذي سيتم إنشاؤه و MyMainClass هي الكلاس الرئيسية (Main-Class)

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هل هناك وجود للـ Pointers في الجافا (صاحب السؤال :

بيان محمد / صاحب الجواب: علاء الصالحي)

جافا لا تحتوي على مؤشرات بأي طريقة كانت

للتوضيح المؤشر هو عبارة عن طريقة

لتغيير عنوان المتغير من مكان في الذاكرة إلى مكان آخر

السؤال الذي يسأله الجميع دائماً

لماذا جافا لا تسمح بالمؤشرات

مع أنها توفر الكثير من الوقت

بل وفعلياً هي أسرع بكثير من حجز متغيرات جديدة

سببين هما الجواب على هذا السؤال

1- التخبط الذي يسببه المؤشر

أحياناً كثيرة يكون المؤشر سبباً في إضاعة الوقت الكثير

في عمليات فهم الش%

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ما فائدة استعمال SwingUtilities.invokeLater(Runnable) وما هو الEDT Event Dispatching Thread [جواب الأخ Wajdy Essam]

في البدايه قبل أن تتعرف على وظيفه الداله SwingUtilities.invokeLater() هناك موضوع مرتبط به وهو Event Dispatched Thread . ففي أي برنامج تقوم بعمله وتنشى كائن من AWT (أو Swing فهي تعتمد على الأولى) وتظهر الكائن (سواء بالداله show أو setVisible أو حتى paint ) فسوف يعمل الحدث الخاص به ولكن لن يعمل في Main Thread بل في ثريد خاص يسمى EDT .

أي أن Event Dispatched Thread هو ثريد خاص للتعامل مع الأحداث وعمليات رسم المكونات drawing and event-handling code سواء Swing أو AWT ، مثلا الدوال paint() و actionPerformed() مباشره سوف تعمل في EDT . -دوال اعاده الرسم ، ودوال التعامل مع الحدث تعمل مباشره في هذا الثريد-

ومكونات Swing هي غير أمنه لحظه التعامل مع الThread (هي Not-Thread Safe) بمعنى أنه يجب عند التعامل مع هذه المكونات أن تعمل في Thread واحد ، وأي داله تحاول أن تغير من قيمه الكائن من Swing يجب أن يعمل في نفس Thread . بعكس AWT .

Once a Swing component has been realized, all code that might affect or depend on the state of that component should be executed in the event-dispatching thread

الأن لكي نقوم بتنفيذ كود داخل الـ EDT ، وفرت sun لنا دالتين في الكلاس SwingUtilities هما :

invokeLater وهي تقوم بوضع الكود الذي تريد أن يعمل في EDT في صف العمليات Event Queue، وترجع مباشره بدون أنتظار تنفيذه ،

invokeAndWait نفس عمل الداله السابقه ولكن تتنظر الى أن يتم تنفيذه ،

هناك طريقه أخرى لتنفيذ الكود في EDT عن طريق Swing Worker أظنه خاص باصدارت جافا 5 وما فوق ، لم أجربه للأسف .

بشكل عام هذه الداله invokeLater تستخدم عندما تريد أن تغير في كائنات Swing من Thread أخر ، فكما في الـ tutorials من sun عند أنشاء مكونات Swing من الداله main ، فيتم انشائها بهذه الداله لأن Main يعمل في Thread منفصل عن EDT .. لكن عند التعامل مع الـ Listener لا توجد حاجه لأنني كما ذكرت في البدايه جميع الـ Listener وpainting و revalidate جميع تلك الداول تعمل في EDT مباشره ،

You only need to use invoke later when you change a component from another thread

على العموم ، بالنسبه لى لم أستخدم هذه الداله ، ربما لأن البرامج التي أقوم بها بسيطه أو لأنه لا توجد حاجه لها في معظم البرامج ، الله أعلم .

روابط مفيده:

Threads and Swing

What exactly is the "Event Dispatch" thread (aka "AWT" Thread)?

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الفرق بين String و StringBuffer و StringBuilder [جواب الأخ Wajdy Essam]

جميع هذه الكلاسات تستخدم للتعامل مع الـ String ، الفرق بينهم :

القيمه الموجوده في String لا يمكن أن تتغير والسبب أن الكلاس String هو كلاس Immutable

أما القيم الموجوده في StringBuffer و StringBuilder يمكن أن تتغير والسبب أنهم Mutable .

الفرق بين StringBuffer و StringBuilder ليس كبير ، حيث أن الـ StringBuilder هو unsynchronized بمعنى أنه يستخدم في حاله كان البرنامج يعمل بـ Single Thread . أما الـ StringBuffer فهو synchronized ويفضل أستخدامه في حاله البرنامج يدعم أكثر من Thread .

>>>>> عودة إلى الأسئلة

تم تعديل بواسطه herch
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيف يمكن معرفة قيم متغيرات البيئة Environment variables

يمكن استرجاع قيمة متغير ما من متغيرات البيئة بواسطة الدالة

System.getenv(String varName);

للإشارة، فإن الe في getenv هو lowercase وليس ذلك خطأ في الكتابة

مثلا إذا أردنا معرفة فيمة المتغير PATH فيمكننا كتابة التالي


System.out.println("PATH: " + varPath);
String varPath = System.getenv("PATH");

وهذه نتيجة الكود السابق

CONSOLE

PATH: /home/issam/jdk1.6.0_16/bin:/usr/local/bin:/usr/bin:/bin:/usr/games

إذا كنا نريد معرفة أسماء كل المتغيرات المتوفرة وقيمها، يمكننا دائما استعمال System.getenv ولكن هذه المرة بدون arguments، هذه الدالة تعيد كائنا من صنف Map. يمكننا بالتالي عمل loop على هذا الكائن للحصول على أسماء كل المتغيرات وقيمها


for (String key : mapVar.keySet()) {
System.out.println(key + ": " + mapVar.get(key));
}
java.util.Map<String, String> mapVar = System.getenv();

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيف يمكن فتح ملف بواسطة البرنامج المرتبط به؟

إذا كان لديك مسار ملف doc، وكنت تريد فتحه، لكنك تريد أن يتم فتحه من طرف MSWord، أو ملف odt تريد أن يتم فتحه في open office، فالجافا منذ النسخة السادسة تتيح إمكانية فتح ملف بالبرنامج المرتبط به في النظام.

الفئة التي تسمح بذلك والتي تم إضافتها منذ النسخة السادسة هي java.awt.Desktop. والدالة التي سنستعملها هي الدالة open. يكفي أن نمرر لهذه الدالة كائن من صنف File والذي يمثل الملف الذي نريد فتحه


import java.awt.Desktop;
import java.io.File;
import java.io.IOException;

public class OpenFile {
public static void main(String[] args) {
if (args.length > 0) {
try {
Desktop.getDesktop().open(new File(args[0]));
} catch(IOException e) {
e.printStackTrace();
}
} else {
System.out.println("No file");
}
}
}

مثلا إذا مررت ملف avi إلى البرنامج فإنه سيفتحه ببرنامج kaffeine وهو قارئ الفيديو عندي

CONSOLE

java OpenFile 07-Ghost_25.avi

>>>>> عودة إلى الأسئلة <<<<<

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيف أملأ JTextArea ابتداء من ملف نصي بكل سهولة؟؟

يمكن ملء مكون JTextArea بمحتوى ملف نصي بواسطة الدالة read والتي يرثها من الكلاس JTextComponent


import javax.swing.*;

public class FillTextAreaFromFile {

public static void main(String[] args) {
FileReader fReader = null;
JFrame frm = new JFrame();
JTextArea txtArea = new JTextArea();
try {
fReader = new FileReader("file.txt");
txtArea.read(fReader, null);
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (fReader != null) {
try {
fReader.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}

frm.add(txtArea);
frm.setSize(400, 400);
frm.setVisible(true);
}
}
import java.io.*;

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيف يمكن معرفة نوع متغير char، هل هو حرف أم رقم أم فراغ؟؟

الفئة Character تمكننا من ذلك. هذه الفئة توفر لنا العديد من الدوال للتعامل مع الحروف ( أعني هنا بحرف character وليس letter )

الدوال التي سنستعملها هي isLetter و isDigit و isSpaceChar. كل هذه الدوال تنتظر إما متغير من نوع char او متغير من نوع int والذي تمثل قيمته الكود unicode للحرف، وكل هذه الدوال تعيد boolean



public static void main (String[] args) {
String str = "I need 50 dollars";
System.out.println(str);
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (Character.isLetter(ch)) {
System.out.println("Character \"" + ch + "\" in index " + i + " is a letter.");
} else if (Character.isDigit(ch)) {
System.out.println("Character \"" + ch + "\" in index " + i + " is a digit.");
} else if (Character.isSpaceChar(ch)) {
System.out.println("Character \"" + ch + "\" in index " + i + " is a space.");
}
}
}
}
public class CheckChar {

>>>>> عودة إلى الأسئلة <<<<<

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيفية إظهار صورة عند بداية تشغيل برنامجك بانتظار ظهور النافذة الأساسية؟؟

إذا كان لديك برنامج يتأخر في تحميل الواجهة الرئيسية، وكنت تريد إظهار صورة ما بانتظار ظهور البرنامج، فهذا ممكن بدون تغيير أي سطر في الكود، منذ النسخة السادسة من جافا.

هناك طريقتان لفعل ذلك، الأولى عند التنفيذ عبر سطر الأوامر، والثانية من خلال ملف الmanifest الموجود داخل ملف jar

الطريقة الأولى عبر سطر الأوامر

عند التنفيذ، يكفي إضافة الخيار -splash متبوعا بالصورة التي تريد إظهارها

CONSOLE

java -splash:theImage.jpg YourMainClass

وستظهر تلقائيا الصورة theImage.jpg إلى أن تظهر النافذة وعندها ستختفي الصورة من تلقاء نفسها

الطريقة الثانبة: من خلال ملف manifest

في هذه الحالة البرنامج سيكون على شكل ملف jar، سنقوم أولا بكتابة الملف manifest، والذي سيحتوي على التالي


SplashScreen-Image: theImage.jpg
Main-class: YourMainClass

والآن يكفي إنشاء ملف jar وتحديد ال manifest الخاص به. لمعرفة طريقة إنشاء ملف jar: كيف أنشئ ملف jar لمشروعي باستعمال سطر الأوامر؟؟

الملف المرفق يحتوي على برنامج بسيط يفتح نافذة فارغة، يمكن تجريب الطريقة الأولى به، كما يوجد أيضا ملف jar يستعمل الطريقة الثانية، وملف الmanifest الذي تم استعماله

>>>>> عودة إلى الأسئلة <<<<<

splash.zip

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيف أغير شكل طباعة التاريخ؟؟

عندما نقوم بطباعة التاريخ مباشرة، مثلا باستعمال السطر التالي

System.out.println(new Date());

فإن ذلك يكتب التاريخ لكن بشكل غير واضح

CONSOLE

Sat Sep 26 11:43:59 WET 2009

من أجل التحكم أكثر بطريقة كتابة التواريخ، جافا وفرت الفئة java.text.SimpleDateFormat والتي تسمح لنا بكتابة التاريخ بالشكل الذي نريده، يكفي فقط أن نمرر لها نموذج التاريخ الذي نريده.

عند إنشاء كائن من صنف SimpleDateFormat، فإننا نمرر للconstructor النموذج الذي نريد، والنداء على الدالة format. هذا النموذج يجب أن يتبع شكلا محددا. فمثلا في هذا الكود


System.out.println(formatter.format(new Date()));
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yy");

الString الذي مررناه هو النموذج. الحرف d يعني رقم اليوم، والحرف M يعني رقم الشهر، والحرف y يعني السنة. الرمز - لا يعني شيئا لهذه الفئة لذلك فهي تتركه كما هو

وبعد إنشاء الSimpleDateFormat فإننا نعمل format للتاريخ حتى يظهر حسب النموذج الذي مررناه

لنشرح أكثر السطر الأول. النموذج الذي مررناه يقول ل SimpleDateFormat. عندما يطلب منك عمل format لتاريخ ما، أولا اكتب رقم اليومين في عددين، متبوعا بالرمز"-"، ثم اكتب رقم الشهر في عددين متبوعا بالرمز"-"، وأخيرا اكتب رقم السنة أيضا في عددين. النتيجة ستكون على الشكل التالي

26-09-09

ماذا لو أردنا كتابة السنة على شكل أربعة أعداد؟؟ يكفي أن نكتب أربعة حروف "y" بدل إثنين فقط


System.out.println(formatter.format(new Date()));
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");

والنتيجة ستكون على الشكل التالي

26-09-2009

ماذا لو أردنا أن نكتب أيضا إسم اليوم؟؟ إسم اليوم ممثل بالحرف "E"، إذن يكفي إضافة الرمز E بعدد الحروف التي نريدها أن تظهر. مثلا إذا كتبنا فقط ثلاثة رموز E


System.out.println(formatter.format(new Date()));
SimpleDateFormat formatter = new SimpleDateFormat("EEE dd-MM-yyyy");

، فإن النتيجة ستكون على الشكل التالي

sam. 26-09-2009

sam هي اختصار ل samedi، أي السبت. تم اختصار إسم اليوم حتى يكون من ثلاثة حروف. إذا أردناه أن يظهر كاملا فيكفي إضافة رموز "E" إخرى


System.out.println(formatter.format(new Date()));
SimpleDateFormat formatter = new SimpleDateFormat("EEEEEEE dd-MM-yyyy");

samedi 26-09-2009

الآن نريد أن نكتب الساعة أيضا. نعرف الآن طريقة إنشاء النموذج ويكفي معرفة الرموز التي تشير إلى الساعة، الدقيقة والثانية

الساعة: H

الدقيقة: m

الثانية: s

إذن كل ما يجب عمله هو كتابة النموذج على هذا الشكل


System.out.println(formatter.format(new Date()));
SimpleDateFormat formatter = new SimpleDateFormat("EEEEEE dd-MM-yyyy hh:mm:ss");

مع الإشارة إلى أن الرمز ":" يتم كتابته كما هو لأنه لا يعني شيئا للكلاس SImpleDateFormatter

والنتيجة تكون كالتالي

samedi 26-09-2009 12:23:14

وهذا مثال يجمع ما تكلمنا عنه


import java.text.SimpleDateFormat;

public class FormatDate {
public static void main(String[] args) {
SimpleDateFormat formatter1 = new SimpleDateFormat("dd-MM-yy");
SimpleDateFormat formatter2 = new SimpleDateFormat("dd-MM-yyyy");
SimpleDateFormat formatter3 = new SimpleDateFormat("EEE dd-MM-yyyy");
SimpleDateFormat formatter4 = new SimpleDateFormat("EEEEEE dd-MM-yyyy hh:mm:ss");
Date d = new Date();
System.out.println("Date without formatting: " + d);
System.out.println(formatter1.format(d));
System.out.println(formatter2.format(d));
System.out.println(formatter3.format(d));
System.out.println(formatter4.format(d));
}
}
import java.util.Date;

لمعرفة كل الرموز المتوفرة، يمكن مراجعة توثيق الفئة SimpleDateFormat

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيف أحصل على لائحة الخطوط الموجودة في النظام؟؟

يمكن ذلك باستعمال الدالة getAvailableFontFamilyNames() الموجودة في الكلاس GraphicsEnvironment. هذه الدالة تعيد مصفوفة من فئة String.

مثال



public class DisplayFonts {

public static void main(String[] args) {

String[] fontNames = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
for (int i = 0; i < fontNames.length; i++) {
System.out.println(fontNames[i]);
}
}
}
import java.awt.GraphicsEnvironment;

>>>>> عودة إلى الأسئلة <<<<<

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .