منصة NetBeans - كيفية الحصول على رد اتصال عندما تبدأ عقار / ينتهي التحرير

StackOverflow https://stackoverflow.com/questions/2906823

سؤال

في مجال بلدي ، لديّ كائنات يتم تحديثها باستمرار بواسطة عملية منفصلة ، وأريد أن يعرض PropertySheetView الخصائص المتغيرة. يتم إعداد التنفيذ الحالي بحيث يكون كائن نموذج المجال الأساسي غير قابل للتغيير ، وبالتالي عندما يتغير ، يوجد كائن جديد منشورًا بمعرف مقابل. عند هذه النقطة ، اشتركت العقدة الخاصة بي في الاشتراك في الكائن ، ويحصل على الكائن المحدث بمعرف مطابق ، ويعيد إنشاء الورقة (عبر Createshet ()) ومكالمات Setshele مع المعلومات المحدثة. يعمل هذا بشكل جيد دائمًا عرض أحدث إصدار من كائن نموذج المجال.

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

هذا أمر بالغ الأهمية لتطبيقي ؛ كما هو الحال الآن ، لا يمكنك الحصول على قيمة جديدة قبل تحديث الورقة ويختفي تحريرك.

إذا كان الأمر مهمًا ، فأنا أستخدم propertyeDitorSupport مخصص ، ولكن الافتراضي في Placeeditor.

لقد قمت بالكثير من البحث من خلال مصدر NetBeans ولا أرى أي إعدادات API مكشوفة للاستماع إلى هذه الأشياء.

SheetCelleditor (org.openide.explorer.propertysheet) يعرض طريقة AddCelleDitorListener ، لكن أ) لا يمكنني معرفة كيف سأحصل على مقبض على مثيل SheetCellEditor ، و B) الأساليب المكشوفة من قبل SheetCellEditor يتم تحريرها وإداناتها - بدأ رد الاتصال للتحرير! يبدو سخيف جدا. من شأنه أن يعرض هذه الخاصية القابلة للاستيعاب هذه الخاصية أيضًا ، لأنها تمتد Jtable ، لكن لا يمكنني معرفة كيفية الحصول على مقبض لهم أيضًا.

لاحظت أن celleditor تتطلب الواجهة الطريقة قابلية للتطبيق() ، والتي من المفترض أن تُرجع صحيحًا إذا كان يمكن تحرير الخلية ، وبالتالي يبدأ التحرير. ولكن مرة أخرى ، يتم تنفيذ ذلك بواسطة SheetCelleditor وهو ليس من الطبقة العامة ، ولا أعرف كيفية الحصول على إشارة إليها.

شكرا لك على مساعدتك.

هل كانت مفيدة؟

المحلول

أفضل حل يمكن أن أتوصل إليه على النحو التالي:

إنشاء محرر خاصية مخصصة. اجعل هذا المحرر ينفذ inplaceDitor. إرجاع stringInplaceeditor وهو Textfield. إرفاق مستمع التركيز إلى هذا النص. عندما يكون التركيز في حقل النص ، يتم تحريره. وإلا فإنه ليس كذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top