Javafx هي المكتبة القياسية الجديدة المستخدمة في Java لإنشاء تطبيقات الرسومات ، ولكن لا يزال العديد من المبرمجين يلتزمون باستخدام Swing أو حتى Awt. فيما يلي بعض الاقتراحات حول كيفية بناء تطبيقات سريعة الاستجابة مع ميزات رائعة جديدة في مجموعة أدوات Javafx!
1. قيمة السمة
إذا كان لديك فهم كامل لمكونات Javafx ، فقد واجه Mobile العقار. يمكن ملاحظة كل قيمة تقريبًا في مكتبة FX ، وعرض القسم ، وحجم الصورة ، والنص في الملصق ، والعناصر الفرعية في القائمة ، وحالة مربع الاختيار. تنقسم السمات إلى بدائل: سمات قابلة للكتابة وسمات قابلة للقراءة. يمكن تعديل القيم القابلة للكتابة ، إما باستخدام طريقة Setter أو مباشرة. يعالج Javafx عملية معالجة الأحداث ويضمن إخطار كل مكون يعتمد على هذه الخاصية. الخصائص القابلة للقراءة لها طرق تسمح لك بتلقي الإخطارات عند تعديل قيمها.
مثال:
// اسم stringProperty قابل للقراءة والكتابة = جديد SimplestringProperty ("Emil") ؛ // read-on-oncessablebooleanvalue nameisEmpty = name.isempty () ؛2. قيمة الربط
عندما يكون لديك قيمة قابلة للكتابة وقابلة للقراءة ، يمكنك البدء في تحديد القواعد حول كيفية ارتباط هذه القيم. يمكن أن تكون خاصية قابلة للكتابة ملزمة بخاصية قابلة للقراءة ، وبالتالي فإن قيمتها ستتطابق دائمًا مع واحدة قابلة للقراءة. لا تحدث الروابط على الفور ، ولكن سيتم القيام بها قبل ملاحظة القيمة (وننظر إلى ما فعلته هناك). يمكن أن يكون الربط في اتجاه واحد أو في اتجاهين. بالطبع ، إذا كانت ثنائية الاتجاه ، يجب أن تكون كلتا الممتلكات قابلة للكتابة.
مثال:
textfield fielda = new textfield () ؛ textfield fieldb = new textfield () ؛ fielda.prefwidthProperty (). bind (fieldb.widthProperty ()) ؛
3. قائمة الملاحظة
الصفات ليست هي الأشياء الوحيدة التي يمكن ملاحظتها. إذا تم تغليف القائمة في Observablelist ، فيمكن أيضًا ملاحظة أعضاء القائمة. نموذج الاستجابة لـ Observablelist متقدم تمامًا. لا يمكنك تلقي الإخطارات فقط عند تعديل القائمة ، ولكن أيضًا ترى كيفية تعديل القائمة.
مثال:
قائمة <Tring> otherlist = arrays.aslist ("foo" ، "bar" ، "bar") ؛ ObservableList <string> list = fxCollections.ObservablElist (otherlist) ؛ list. (change.wasadded ()) {system.out.println ("العناصر" + تغيير. list.set (1 ، "foo") ؛ system.out.println ("القائمة الجديدة:" + list) ؛إخراج تشغيل الكود أعلاه كما يلي:
القائمة القديمة: تمت إضافة [foo ، bar ، bar] event.items [foo].
كما ترون ، فإن عملية الإعداد ستؤدي فقط إلى حدوث حدث مرة واحدة.
4. StringConverter
في بعض الأحيان ستجد أنك لست بحاجة إلى استخراج القيم من مكون عندما تريد إنشاء ملزمة. مثال نموذجي على ذلك هو أن لديك سلسلة من المسار الذي تحصل عليه من حقل نص. إذا كنت ترغب في الحصول على خاصية يمكن ملاحظتها مع هذه القيمة ممثلة كمسار ، فأنت بحاجة إلى إنشاء سلسلة stringConverter لذلك.
مثال:
TextField FileLocation = new TextField () ؛ StringProperty location = fileLocation.TextProperty () ؛ Property <Path> path = new SimpleObjectProperty <> () ؛ bindings.bindbidirectional (الموقع ، المسار ، stringConverter جديد <path> () {Override public string toString (path path) {return path.toString () ؛} Override Public Path FromString (String String) {return paths.get (string) ؛}}) ؛خصائص الكائن ليست روابط ثنائية الاتجاه لقيم حقل النص.
5. التعبيرات
باستخدام فئة Bindings أعلاه ، يمكنك إنشاء أي نوع من التعبير. على سبيل المثال ، لديك حقلان نصي يسمحان للمستخدمين بإدخال المعلومات. الآن أريد تحديد مجال للقراءة فقط ، والذي سيحتوي دائمًا على سلسلة. إذا كانت أطوال السلسلتين متساوية ، فسيتم خلط السلاسل معًا فترات عرضية على حدة للعرض. إذا كانت الأطوال غير متساوية ، فسيتم عرض رسالة مساعدة.
مثال:
TextField أولاً = New TextField () ؛ TextField Second = New TextField () ؛ TextField Mix = New TextField () ؛ mix.textProperty (). bind (bindings.hen (first.lengthProperty (). isequalto (second.length.lengthProperty ())) .Then (bindings.createstringBinding (() -> {int length = first.lengthProperty (). Second.TextProperty. أدخل سلسلتين من نفس الطول بالضبط. ") ؛هذا مجرد القليل من ميزات العديد من Javafx. نأمل أن تتمكن من العثور على المزيد من الطرق الإبداعية للاستفادة من نظام الحدث هذا!