سؤال

لقد أنشأت مخصص JPanel الذي يعرض الصور (يتيح الاتصال به MyPanel)، لقد أضفت هذا إلى JFramespontpane.

أريد JFrame ليتم تغيير حجمها تلقائيا لتناسب MyPanel عند تغيير الصورة.

يبدو أنني بحاجة إلى الاتصال frame.pack() لفعل هذا. دعا pack() من عند MyPanel يزيد اقتران لذلك لا أريد أن أفعل ذلك.

لحل المشكلة التي قدمتها JFrame (دعونا نسميها MyFrame) و مصنوع MyFrame المراقب، و MyPanel يمكن ملاحظتها. كلما كانت الصورة MyPanel يتم عرض التغييرات التي يخطر فيها المستمعين MyFrame لهذه الحالة. وثم MyFrame المكالمات pack() عندما يحصل على الإخطار.

هل هناك طريقة أكثر سلاسة لتغيير حجمها JFrame وفقا لمحتواه؟

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

المحلول

الحل الذي وصفته يبدو معقولا.

بدلا من ذلك، عندما يغير MyPanel صورته، يمكن أن يذهب البحث عن إطار الوالدين ثم استدعاء حزمة () عليه. إذا لم يكن هناك مثل هذا الإطار، فلا تفعل أي شيء. لا حاجة لإنشاء فئات إضافية، كما أنها تفقد اقتران كما ستحصل عليه. يمكنك استخدام flowuditures.getancestorofclass () للقيام بذلك بسهولة.

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