ورود

View Full Version : ارجاع به یک کلاس قبل تر با this



mostafa3dmax
چهارشنبه 11 بهمن 1396, 12:52 عصر
سلام
فرض کنید من یک کلاس ساختم که کلاس JPanel رو اکستند کرده حالا توی این کلاسی که ساختم میخام یک کلاس دیگه بسازم که mouseAdapter رو اکستند کنه تا بتونم به mouseEvent ها دسترسی داشته باشم مثلا درگ کردن . تو متد mouseDragged چجوری میتونم به طول و عرض کلاس اصلیم که از کلاس JPanel اکستند شده دسترسی داشته باشم ؟ در صورتی که اگه از this توی متدmouseDragged استفاده کنم پروپرتی های mouseAdapter رو بم میده .

mostafa3dmax
چهارشنبه 11 بهمن 1396, 22:54 عصر
نمیدونم این خاصیت اینجاست که اینجوری میشه یا نه ولی هروقت یه مشکلی داشتم اینجا پست گذاشتم بعد از 4-5 ساعت اتفاقی خودم تونستم مشکلو پیدا کنم و رفعش کنم ! البته این مشکلاتی که اینجا میپرسمو بعد از کلی سرچ و پیدا نکردن جواب مینویسم( تو این مورد چون دقیقا نمیدونستم چی باید سرچ کنم نتونستم اون چیزی که میخام رو پیدا کنم ) که بعدا خودم جوابشو پیدا میکنم ولی خب از شانس بد من اینجا هم کسی کم تر 5-6 ساعت یا 24 ساعت جواب نمیده البته یه بدی دیگه ای هم که این فروم داره اینه که فقط یه نفر توش فعاله اونم آقا وحیده که همیشه به ما تازه واردا لطف داشتن (البته نمیدونم چرا این چند وقته کم کار شده :لبخند: ) .در هر صورت جواب رو مینویسم که اگه بنده خدایی همچین مشکلی داشت بتونه حلش کنه .

راح حل اینه که از کلمه this به این صورت استفاده کنیم که مثلا کد زیر رو داریم :

class Class1 extends anyClass{
int x;
class Innerclass1{
int x;
int y;
public InnerClass1(){
this.x // x مربوط به InnerClass1 رو برمیگردونه
Class1.this.x // x مربوط به کلاس بیرونی یا کلاس مادرش رو برمیگردونه
}
}
}

البته به جای this.x اولی میشد InnerClass1.this.x هم نوشت که لزومی نداره ولی برای اینکه خوانایی کد بیشتر بشه بنویسیم فک کنم بهتر باشه .