PDA

View Full Version : مشکل با JList و ListSelectionListener



امیر164
سه شنبه 24 خرداد 1384, 22:10 عصر
سلام . من میخوام که یه Listener برای جی لیستم بزارم ولی یه کم مشکل دارم
کد زیر رو نوشتم :


lst.addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent event)
{

JOptionPane.showMessageDialog(null,"salam");


}
});

این کد درست کار میکنه ولی اگه به جای


JOptionPane.showMessageDialog(null,"salam");

بخوام به عنتصر لیست یا حتی Container دسترسی پیدا کنم ایراد میگیره :


Cannot refer to a non-final variable lst inside an inner class defined in a different method


من حتی 2 تا از مثالهای دیتل رو هم عینا امتحان کردم ولی جواب نداد
ممنون میشم کمک کنید

hps
چهارشنبه 25 خرداد 1384, 00:01 صبح
مشکل از اینجاست که تو lst رو تو Scope همون متدی که addListSelectionListener رو صدا می‌زنی تعریف کردی. بدیهیه که اون Inner Class (همون EventListener) نمی‌تونه به Objectهای توی اون Scope دسترسی داشته باشه. سه تا راه‌حل داری:

1. یه Final Modifier قبل از lst بگذاری.
2. یه راه بهتر از قبلی اینه که lst رو تو Class Scope تعریف کنی.
3. راه‌حل بهتر از دوتای قبلی برای دسترسی به lst اینه که توی همون valueChanged از (JList) getSource استفاده کنی.