تقدم هذه المقالة كيفية استخدام الوضع المقطوع الرأس على منصة Java SE القياسية ، والمعروفة أيضًا باسم J2Se).
الوضع المقطوع هو تكوين النظام عندما تفتقر الشاشة أو لوحة المفاتيح أو الماوس. يبدو الأمر لا يصدق ، ولكن في الواقع يمكنك إكمال عمليات مختلفة في هذا الوضع ، حتى مع البيانات الرسومية.
أين يمكنني استخدام هذا النموذج؟ فكر في تطبيقك باستمرار. عند إنشاء الصور ، يجب عليك تطبيق الشاشة ولا لوحة المفاتيح. دعنا نفترض أن تطبيقك لديه الآن بنية رئيسية أو خادم خاص ، ولكن هذه الخدمة لا تحتوي على عرض أو لوحة مفاتيح أو ماوس. القرار المثالي هو استخدام عدد كبير من قوة الحوسبة المرئية بدلاً من الخصائص غير المرئية. يمكن تمرير الصورة التي تم إنشاؤها في الوضع غير المقطوع إلى النظام الرئيسي لتقديم أعمق.
هناك العديد من الطرق في فئة Java.Awt.Toolkit و Java.Awt.GraphicsEnvironment. ولكن يمكن تنفيذ بعض الفئات ، مثل اللوحة القماشية واللوحة ، في الوضع غير المقطعي. بعد منصة J2SE 1.4 ، فإنه يوفر الدعم للوضع بدون رأس.
ملاحظة: تركز هذه المقالة على مستند إصدار منصة Java SE6. تتم مراجعة أي واجهة برمجة تطبيقات أو غيرها من منصات Java SE والموافقة عليها من قبل GSR270 Expert Grova (JSR 270 خبراء.).
مجموعة الأدوات
Java.Awt.Toolkit Class هي فئة الوالدين المجردة من مجموعة أدوات النافذة التجريدية (AWT). تُستخدم الفئات الفرعية الخاصة بـ Toolkit لربط مكونات AWT المختلفة بمجموعة أدوات محلية محددة.
ستتأثر العديد من المكونات إذا لم يتم دعم الجهاز أو لوحة المفاتيح أو الماوس. يجب أن يرمي مُنشئ مناسب استثناء من قبل مقطوع الرأس:
يتطلب هذا المكون الثقيل وظيفة رسومية من نظيرها إلى دعمها.
لا تحتاج مكونات مكونات القماش واللوحة والصور إلى إلقاء تشوهات مقطوعة الرأس ، لأن هذه المكونات يمكن أن تستخدم وظائف فارغة على مستوى نظام التشغيل ، ثم تتم معالجتها كمكونات خفيفة الوزن.
تربط مجموعة أدوات Headless أيضًا مكونات Java بالموارد المحلية ، ولكنها لن تفعل ذلك إلا عندما لا يتضمن المورد أجهزة العرض أو أجهزة الإدخال.
بيئة الرسومات
فئة Java.Awt.GraphicsEnvalonment هي فئة مجردة تصف مجموعة من كائنات GraphicsDevice وكائنات الخطوط التي يمكن استخدامها في تقنية Java في منصة معينة. يمكن أن تكون الموارد في GraphicsEnvalonment معدات محلية أو طويلة. يمكن أن يكون كائن GraphicsDevice عبارة عن مخبأ أو طابعة أو رسومات ، وهو هدف وظيفة الرسم Graphics2D. يحتوي كل GraphicsDevice على العديد من كائنات التكوين Graphics Configuration المتعلقة به. تحدد هذه الكائنات بيئات التكوين المختلفة ، ويمكن استخدام GraphicsDevice في بيئات التكوين هذه.
يوضح الجدول 1 طريقة GraphicsEnvalonment ، والتحقق
الجدول 1. طريقة الوضع بدون رأس
ملاحظة: يقوم iSheadless () بالتحقق من سمات النظام المحددة ، Java.Awt.Headless بدلاً من تكوين أجهزة النظام.
يعتمد الكود الذي تم إلقاؤه بواسطة HeadlessException ، والماوس ، والماوس كبيئة لا تدعم أيًا من هذه الاستثناءات.
اضبط الوضع بدون رأس
استخدم الوضع غير المقطوع للتشغيل ، يجب عليك أولاً فهم كيفية التحقق من سمات النظام وتعيينها. بالإضافة إلى ذلك ، يجب أن تفهم كيفية إنشاء فئة تنفيذ مقطوعة الرأس لاستخدام شريط أدوات.
تكوين سمة النظام
من أجل تمكين الوضع غير المقطوع ، تحتاج إلى استخدام طريقة setProperty () لتعيين سمات النظام المقابلة. تتيح لك هذه الطريقة تعيين سمة النظام مع القيمة المتوقعة.
System.SetProperty ("java.awt.headless" ، "true") ؛في الكود أعلاه ، java.awt.headless هي سمة نظام ، وصحيح هي القيمة التي حددناها.
إذا كنت ترغب في استخدام البيئة الخالية من الرأس والتقليدية في أحد البرامج نفسها ، فيمكنك استخدام سطر الأوامر التالي لإكمال:
java -djava.awt.headless = صحيح
قم بإنشاء مجموعة الأدوات الافتراضية
إذا تم تعيين سمات النظام لاسم Java.Awt.Headless على True ، فسيتم استخدام مجموعة الأدوات بدون رأس. بعد ذلك ، استخدم طريقة getDefaultToolkit () لإنشاء مثيل لأداة مقطوعة الرأس:
Toolkit tk = toolkit.getDefaultToolkit () ؛
فحص الوضع مقطوعة الرأس
للتحقق من قابلية استخدام وضع Headess ، استخدم طريقة ISHeadless () لفئة GraphicsEnvironment ::
GraphicsEnvironment GE = GraphicsEnvironment.getlocalGraphicsEnvironment () ؛
هذه الطريقة تتحقق من سمات نظام java.awt.headless. إذا كانت هذه السمة لها قيمة صحيحة ، فسترمي مقطوعة الرأس من مجموعة أدوات والاعتماد على الشاشة ولوحة المفاتيح والفأر GraphicsEnvalonment.
التشغيل في الوضع غير المقطوع الرأس
بعد إعداد الوضع بدون مقطوعة الرأس وإنشاء مثيل لمجموعة الأدوات بدون رأس ، يمكن للتطبيق إجراء العمليات التالية:
قماش (قماش)
سوف يرسم الرمز التالي مساحة مستطيلة فارغة على الشاشة ، ويمكنك رسم خطوط عليها. يمكنك استخدام فئة Canvas لإنشاء مكون Canvas جديد.
Canvas C = New Canvas () {public void paint (Graphics g) {rectangle r = getBounds () ؛ ، r.width -1 ، 0) ؛}} ؛الخطوط (الخط)
يوضح هذا الرمز كيفية استخدام الخط لرسم سلسلة نصية وتعيين خط النص. يتم استخدام كائن الرسومات لرسم هذه السلسلة.
Public Void Paint (Graphics G) {G.SetFont (خط جديد ("Arial" ، font.italic ، 12) ؛ G.DrawString ("Test" ، 32 ، 8) ؛}
الألوان
يوضح هذا الرمز كيفية استخدام القيم الحمراء والأخضر والأزرق المحددة لتعيين لون الخط. يتم استخدام كائن الرسومات لرسم هذا الخط.
Public Void Paint (Graphics G) {G.SetColor (New Color (255 ، 127 ، 0)) ؛الصور
في الكود التالي ، قامت طريقة read () لـ javax.imageio.imageio بفك تشفير ملف grapefruit.jpg الموضح في الشكل 1 وأرجع صورة ذاكرة التخزين المؤقت.
Image I = Null ؛
الشكل 1. ملف صورة Grapefruit.jpg
مطبعة
يوضح هذا الرمز كيفية طباعة القماش المتاح ، يمكنك استخدام طريقة الطلاء لتخصيص الشاشة الافتراضية للطابعة.
PrinterJob pj = printerjob.getPrinterJob () ؛ .
زمارة
يعرض الرمز التالي طريقة Beep إذا تم استخدام طريقة Beep لفئة مجموعة الأدوات.
Toolkit tk = toolkit.getDefaultToolkit () ؛
مثال بسيط على استخدام الوضع غير المقطوع الرأس
يستخدم مثال Beadlessbasics التالي جميع الوظائف الموضحة في المقالة.
لتشغيل هذا المثال ، تحتاج إلى استخدام Javac لتجميع الكود التالي. انسخ ملف صورة grapefruit.jpg إلى الدليل حيث يوجد فئة headlessbasics.
استيراد java.awt. // استدعاء هذا قبل تهيئة مجموعة الأدوات ، أي ، // قبل أن يطلق على مجموعة الأدوات. تم تعيين خاصية على ذلك // anstance insance أيضًا GraphicsEnvironment.getlocalgraphicsviroronment () ؛ ؛ يتم إنشاء اللوحة. يتم إنشاء Println (" + تم إنشاؤه) ؛ HEIGHT -1) و fonts g.setfont (خط جديد ("arial" ، font.italic ، 12) ؛ G.DrawString ("Test" ، 32 ، 8) ؛} ؛ // وجميع العمليات تعمل بشكل صحيح. C.SetBounds (32 ، 32 ، 128) .printstacktrace (System.err) ؛ (PageIndex> 0) {ret urn print.no_such_page ؛} ((Graphics2d) G). رسم الصورة. z) {z.printstacktrace (system.err) ؛}}}}}}}يوضح الشكل 2 نتيجة الطباعة في هذا المثال.
الشكل 2. مخرجات الطباعة المقطوعة.
بالإضافة إلى ذلك ، يمكنك رؤية المعلومات التالية:
MODE MODE: TrueJava.Awt.Headlessexceptionat. Java: 24) تم إنشاء الإطار: falsejava.head.headlessexception java.awt.graphicsenvalonment.checkheadless (مصدر غير معروف) T java.awt.button. تم إنشاؤه: خطأ
ملاحظة: لغرض العرض التوضيحي ، سوف يتسبب الكود الأولي في إلقاء هذا التطبيق 2 java.awt.Headlessexceptions.
كبديل عن الطريقة السابقة ، يمكنك وضع معلومات الإخراج القياسية في ملف وطباعة الملف. في هذه الحالة ، استخدم سطر الأوامر التالي لتشغيل هذا المثال:
Java Headlessbasics 2> Standard_output.txt
قم بتحويل التطبيق الحالي إلى الوضع المقطوع الرأس.
كيف تقوم بتحويل التطبيق الحالي إلى وضع غير مقطوع الرأس قابل للتنفيذ؟ الطريقة الأكثر فعالية لتنفيذ هذا التحويل هي تحليل رمز المصدر الخاص بك لتحديد أن أي وظيفة تعتمد على الوضع غير المقطوع الرأس. بمعنى آخر ، لتحقيق نفس الميزات ، يجب العثور على الفصل والأساليب التي ستلقي استثناء HeadlessException ، ثم استخدام الوضع المستقل مقطوعة الرأس لاستبدال هذه الفئات والأساليب.
يمكنك استخدام واجهة برمجة تطبيقات Java SE 6 لتوضيح ما إذا كانت فئة أو طريقة معينة تدعم الوضع غير المقطوع الرأس. إذا لم يدعم مكون معين الوضع بدون مقطوع الرأس ، فإن الشذوذ الوحيد الذي يحتاجه البرنامج لالتقاطه هو headlessexception. يتم طرحه قبل تشوهات أخرى محتملة. هذا هو السبب في عدم وجود ضرورة خاصة لالتقاط تشوهات أخرى في مثال الكود في هذا القسم: استخدم الوضع المقطوع الرأس ".
ستجد بالتأكيد فوائد الأساليب المفيدة الأخرى لاستخدام الوضع بدون رأس. نأمل أن تساعدك هذه المقالة في إكمال هذه المهمة ولعب عالم جديد على منصة Java SE.