التعرف على بعض أصناف مكتبة جافا إف إكس JavaFX البسيطة
تعتبر مكتبة جافا إف إكس JavaFX من الأدوات الحديثة والقوية التي طورتها شركة أوراكل لتكون بديلاً عصريًا وفعالًا لـ Swing في تطوير واجهات المستخدم الرسومية (GUI) لتطبيقات جافا. تقدم JavaFX مجموعة واسعة من الأصناف التي تسمح ببناء واجهات تفاعلية غنية وسهلة الاستخدام مع دعم متقدم للرسوميات والتأثيرات والوسائط المتعددة. يتناول هذا المقال شرحًا مفصلًا لبعض الأصناف البسيطة الأساسية في مكتبة JavaFX، والتي تعد اللبنة الأولى لفهم كيفية بناء التطبيقات بها.
مقدمة عامة عن JavaFX
JavaFX هي منصة تطوير واجهات المستخدم الرسومية المخصصة لتطبيقات جافا، تتميز بمرونتها الكبيرة وقدرتها على تقديم تصميمات حديثة وعناصر واجهة مستخدم غنية، حيث تدعم الرسوم المتحركة، وتأثيرات CSS، وواجهات تعتمد على ملفات FXML لتصميم الواجهات بشكل منفصل عن المنطق البرمجي.
تم تصميم JavaFX لتسهيل بناء التطبيقات التي تتطلب تفاعلات متقدمة مع المستخدم، وهي تعمل على مختلف أنظمة التشغيل مثل ويندوز، ماك، ولينكس، مما يجعلها خيارًا مثاليًا للمطورين الذين يرغبون في بناء تطبيقات سطح مكتب متطورة.
أهم الأصناف البسيطة في JavaFX
تحتوي مكتبة JavaFX على عدد كبير من الأصناف التي تتيح التحكم الكامل بعناصر واجهة المستخدم. سنركز هنا على بعض الأصناف الأساسية والبسيطة، التي تشكل نقطة انطلاق لأي مطور يرغب في العمل باستخدام JavaFX.
1. صنف Application
يعتبر صنف Application هو نقطة البداية لأي تطبيق JavaFX، حيث يرث منه كل تطبيق يقوم بتشغيل الواجهة الرسومية. هذا الصنف يحتوي على الطريقة الأساسية start(Stage primaryStage) التي يتم استدعاؤها لعرض واجهة المستخدم على الشاشة.
-
وظيفة الصنف: إدارة دورة حياة التطبيق، بدءًا من الإعداد إلى إظهار النوافذ والتعامل مع الإغلاق.
-
أهم الطرق:
-
start(Stage primaryStage): تُستخدم لتهيئة وإظهار واجهة المستخدم. -
init(): يمكن إعادة تعريفها لتحميل البيانات أو إجراء عمليات تحضيرية قبل بدء التطبيق. -
stop(): تستخدم لإدارة العمليات عند إغلاق التطبيق، مثل تحرير الموارد.
-
2. صنف Stage
Stage يمثل النافذة الأساسية أو أي نافذة فرعية في التطبيق. يمكن وصفه كإطار رئيسي يحتوي على محتويات التطبيق (المشاهد).
-
وظيفة الصنف: إدارة النافذة، التحكم بحجمها، عنوانها، وأحداثها.
-
المكونات الأساسية:
-
setTitle(String title): تعيين عنوان النافذة. -
setScene(Scene scene): ربط مشهد معين بالنافذة. -
show(): عرض النافذة على الشاشة. -
close(): إغلاق النافذة.
-
3. صنف Scene
يمثل Scene المشهد أو المحتوى المرئي داخل نافذة الـ Stage. يحتوي على شجرة من العقد (Nodes) التي تشكل واجهة المستخدم، مثل أزرار، نصوص، صور، وأي عناصر رسومية أخرى.
-
وظيفة الصنف: تحديد ما يتم عرضه في النافذة.
-
أهم الخصائص:
-
root: هو الجذر الأساسي الذي يحتوي على العقد الأخرى في المشهد (عادةً ما يكون من نوعParent). -
إمكانية تغيير حجم المشهد وتأثيراته.
-
4. صنف Node
Node هو الصنف الأب لجميع العناصر المرئية في JavaFX، فهو يمثل عنصرًا في شجرة المشهد. جميع عناصر الواجهة مثل الأزرار، النصوص، الصور، وغيرها ترث من هذا الصنف.
-
وظيفة الصنف: يمثل وحدة بناء واجهة المستخدم.
-
خصائص مهمة:
-
layoutXوlayoutY: لتحديد موقع العنصر داخل الحاوية. -
opacity: لتحديد شفافية العنصر. -
visible: لتحديد ظهور العنصر أو إخفائه. -
style: لإضافة أنماط CSS للعنصر.
-
5. صنف Button
يعد Button من أكثر العناصر استخدامًا في JavaFX، وهو زر يمكن للمستخدم التفاعل معه بواسطة النقر لتنفيذ أمر معين.
-
خصائص مهمة:
-
text: النص الظاهر على الزر. -
onAction: الحدث الذي يتم تنفيذه عند الضغط على الزر.
-
-
طرق هامة:
-
setDisable(boolean): تعطيل أو تفعيل الزر. -
setGraphic(Node graphic): إضافة صورة أو أي عنصر رسومي على الزر.
-
6. صنف Label
Label هو عنصر عرض نصي بسيط، يستخدم لعرض نصوص ثابتة أو ديناميكية في الواجهة.
-
خصائص:
-
text: النص المعروض. -
graphic: يمكن ربط صورة مع النص.
-
-
ميزات إضافية:
-
دعم تنسيق النص باستخدام CSS.
-
إمكانية الربط مع خصائص أخرى لعرض بيانات متغيرة.
-
7. صنف TextField
هو عنصر إدخال نصي بسيط يسمح للمستخدم بإدخال نص من لوحة المفاتيح.
-
خصائص:
-
text: النص الموجود في حقل الإدخال. -
promptText: نص إرشادي يظهر داخل الحقل عندما يكون فارغًا.
-
-
أحداث:
-
دعم الاستماع لتغير النص عبر
textProperty().
-
8. صنف VBox و HBox
هذان الصنفان هما من الحاويات الأساسية لترتيب عناصر واجهة المستخدم عموديًا (VBox) أو أفقيًا (HBox).
-
وظائف:
-
تنظيم وتوزيع العناصر بداخلها بشكل تلقائي.
-
دعم التحكم في التباعد والمحاذاة.
-
-
خصائص مهمة:
-
spacing: المسافة بين العناصر. -
alignment: محاذاة العناصر داخل الحاوية.
-
-
ميزة:
-
يسمحان ببناء تخطيطات بسيطة وواضحة للواجهة.
-
9. صنف SceneBuilder (أداة وليس صنف برمجي)
على الرغم من أن SceneBuilder ليس صنفًا داخل JavaFX، فهو أداة مهمة جدًا تسهل تصميم الواجهات بشكل بصري، حيث يمكن من خلالها سحب وإسقاط العناصر وترتيبها ثم تصدير ملف FXML يستخدم في التطبيق.
كيفية بناء واجهة مستخدم بسيطة باستخدام هذه الأصناف
تبدأ عملية بناء واجهة JavaFX من خلال إنشاء صنف يرث من Application، ثم في طريقة start() يتم إعداد النافذة الأساسية Stage، ومن ثم إنشاء Scene وتحديد جذره مثل VBox أو HBox لترتيب العناصر داخله.
مثال بسيط:
javaimport javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class SimpleJavaFX extends Application {
@Override
public void start(Stage primaryStage) {
Label label = new Label("مرحبا بك في JavaFX!");
Button button = new Button("اضغط هنا");
button.setOnAction(e -> label.setText("لقد ضغطت الزر!"));
VBox root = new VBox(10, label, button);
root.setStyle("-fx-padding: 20; -fx-alignment: center;");
Scene scene = new Scene(root, 300, 200);
primaryStage.setTitle("تجربة JavaFX");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
في هذا المثال يتم إنشاء نافذة تحتوي على نص وزر، وعند الضغط على الزر يتغير النص المعروض. هذا يوضح بساطة استخدام الأصناف الأساسية لتكوين واجهة تفاعلية.
مكونات إضافية تساعد على إثراء الواجهة
صنف TextArea
مشابه لـ TextField ولكنه متعدد الأسطر، يستخدم لإدخال أو عرض نصوص طويلة.
صنف CheckBox
زر اختيار يمكن تحديده أو إلغاء تحديده، يستخدم لتقديم خيارات ثنائية.
صنف RadioButton
يشبه CheckBox لكنه ينتمي لمجموعة واحدة تتيح اختيارًا وحيدًا.
صنف ComboBox
قائمة منسدلة تسمح للمستخدم باختيار عنصر من بين عدة عناصر.
أهمية الأنماط والتنسيق في JavaFX
تدعم JavaFX تنسيق الواجهات عبر ملفات CSS حيث يمكن تخصيص المظهر الخارجي للعناصر، مثل تغيير الألوان، الخطوط، الحواف، والظلال. هذا يعطي مطوري JavaFX القدرة على فصل تصميم الواجهة عن منطق التطبيق، مما يسهل عملية الصيانة والتحديث.
استخدام ملفات FXML مع الأصناف البسيطة
FXML هو ملف XML يستخدم لتعريف واجهات JavaFX بشكل وصفي، مما يسمح للمطورين أو المصممين بإنشاء واجهات بشكل مستقل عن الكود البرمجي.
في هذا السياق، يمكن ربط ملفات FXML بالأصناف البسيطة مثل Button، Label، TextField وغيرها من خلال التعريف داخل ملف FXML، ثم ربطها بالكود البرمجي عبر تقنية الـ Controller.
مقارنة بين JavaFX و Swing من حيث الأصناف البسيطة
بينما توفر Swing مجموعة أصناف مشابهة لبناء الواجهات، تتميز JavaFX بمرونتها العالية في التصميم، ودعمها المتقدم للرسوميات ثلاثية الأبعاد، التأثيرات البصرية، والتحكم في الوسائط المتعددة. كما أن أصناف JavaFX تحتوي على خصائص وأحداث أكثر حداثة تسهل عملية التطوير.
جدول يوضح بعض الأصناف البسيطة في JavaFX ووظائفها
| الصنف | الوظيفة الأساسية | الاستخدام الشائع |
|---|---|---|
| Application | نقطة بداية تطبيق JavaFX، إدارة دورة حياة التطبيق | إطلاق التطبيق وإدارة النوافذ |
| Stage | النافذة أو الإطار الذي يحتوي على المحتوى | عرض النافذة الرئيسية أو النوافذ الفرعية |
| Scene | المحتوى المعروض داخل النافذة | وضع عناصر واجهة المستخدم |
| Node | العنصر الأساسي في شجرة المشهد | جميع العناصر الرسومية في الواجهة |
| Button | زر تفاعلي يسمح بتنفيذ أوامر | تنفيذ الأحداث عند الضغط |
| Label | عرض نص ثابت أو متغير | عرض المعلومات والنصوص |
| TextField | حقل إدخال نصي بسيط | إدخال نصوص قصيرة |
| VBox/HBox | حاويات لترتيب العناصر عموديًا أو أفقيًا | تنظيم تخطيط الواجهة |
الخاتمة
تعد الأصناف البسيطة في مكتبة JavaFX الأساس الذي يبني عليه المطورون واجهات التطبيقات الرسومية. فهم هذه الأصناف والخصائص المرتبطة بها يفتح المجال لاستخدام الإمكانيات الكاملة للمكتبة في تطوير تطبيقات سطح المكتب الحديثة، التي تتميز بالجمال والفاعلية والمرونة. كما يتيح التصميم المعياري والفصل بين الكود والتصميم باستخدام FXML و CSS بناء تطبيقات ذات جودة عالية وصيانة أسهل. مع هذه المعرفة، يصبح من الممكن الانتقال لاحقًا إلى استخدام أصناف ومكونات أكثر تعقيدًا ضمن JavaFX، مثل الرسوم المتحركة، الجداول، وأدوات الوسائط المتعددة.
المصادر والمراجع
-
موقع Oracle الرسمي عن JavaFX: https://openjfx.io/
-
كتاب “JavaFX 8 Introduction by Example” – Carl Dea et al.
هذا المقال يسلط الضوء بشكل شامل على أهم الأصناف البسيطة في JavaFX، مع شرح عملي لكيفية استخدامها ضمن بنية تطبيق JavaFX القياسية، ما يساعد القارئ على بناء أساس متين في تطوير واجهات التطبيقات باستخدام هذه المكتبة.

