منصة NetBeans - كيفية الحصول على رد اتصال عندما تبدأ عقار / ينتهي التحرير
-
04-10-2019 - |
سؤال
في مجال بلدي ، لديّ كائنات يتم تحديثها باستمرار بواسطة عملية منفصلة ، وأريد أن يعرض PropertySheetView الخصائص المتغيرة. يتم إعداد التنفيذ الحالي بحيث يكون كائن نموذج المجال الأساسي غير قابل للتغيير ، وبالتالي عندما يتغير ، يوجد كائن جديد منشورًا بمعرف مقابل. عند هذه النقطة ، اشتركت العقدة الخاصة بي في الاشتراك في الكائن ، ويحصل على الكائن المحدث بمعرف مطابق ، ويعيد إنشاء الورقة (عبر Createshet ()) ومكالمات Setshele مع المعلومات المحدثة. يعمل هذا بشكل جيد دائمًا عرض أحدث إصدار من كائن نموذج المجال.
ومع ذلك ، فإن بعض الخصائص ليست للقراءة فقط ، ولكن بدلاً من ذلك يمكن ضبطها. أرغب في قفل الورقة من التحديث / الكتابة فوقها ، على أساس صف أو ورقة ، بينما يتم تحرير خاصية. من أجل القيام بذلك ، أحتاج إلى الاستماع لتحرير المكالمات والإنهاء حتى أتمكن من معرفة متى يكون من الآمن تحديث الورقة مرة أخرى.
هذا أمر بالغ الأهمية لتطبيقي ؛ كما هو الحال الآن ، لا يمكنك الحصول على قيمة جديدة قبل تحديث الورقة ويختفي تحريرك.
إذا كان الأمر مهمًا ، فأنا أستخدم propertyeDitorSupport مخصص ، ولكن الافتراضي في Placeeditor.
لقد قمت بالكثير من البحث من خلال مصدر NetBeans ولا أرى أي إعدادات API مكشوفة للاستماع إلى هذه الأشياء.
SheetCelleditor (org.openide.explorer.propertysheet) يعرض طريقة AddCelleDitorListener ، لكن أ) لا يمكنني معرفة كيف سأحصل على مقبض على مثيل SheetCellEditor ، و B) الأساليب المكشوفة من قبل SheetCellEditor يتم تحريرها وإداناتها - بدأ رد الاتصال للتحرير! يبدو سخيف جدا. من شأنه أن يعرض هذه الخاصية القابلة للاستيعاب هذه الخاصية أيضًا ، لأنها تمتد Jtable ، لكن لا يمكنني معرفة كيفية الحصول على مقبض لهم أيضًا.
لاحظت أن celleditor تتطلب الواجهة الطريقة قابلية للتطبيق() ، والتي من المفترض أن تُرجع صحيحًا إذا كان يمكن تحرير الخلية ، وبالتالي يبدأ التحرير. ولكن مرة أخرى ، يتم تنفيذ ذلك بواسطة SheetCelleditor وهو ليس من الطبقة العامة ، ولا أعرف كيفية الحصول على إشارة إليها.
شكرا لك على مساعدتك.
المحلول
أفضل حل يمكن أن أتوصل إليه على النحو التالي:
إنشاء محرر خاصية مخصصة. اجعل هذا المحرر ينفذ inplaceDitor. إرجاع stringInplaceeditor وهو Textfield. إرفاق مستمع التركيز إلى هذا النص. عندما يكون التركيز في حقل النص ، يتم تحريره. وإلا فإنه ليس كذلك.