ICS201 - مشكلة مع الـMember Classes وحلها , تفيد الي عندهم Project الآن.

الموضوع في 'علوم الحاسب الآلي' بواسطة SWE Student, بتاريخ ‏9 نوفمبر 2005.

  1. SWE Student

    SWE Student عضو

    انضم:
    ‏11 سبتمبر 2005
    المشاركات:
    180
    الصفحة الرئيسية:
    التقييمات:
    +0 / 0 / -0
    السلام عليكم ورحمة الله وبركاتة



    كانت عندي مشكلة عقدتني لمدة 4 ايام في استخدام
    الـ [color=FF0000]()getText[/color]
    والـ [color=FF0000]()setText[/color]

    لما استخدمها مع الـ [color=FF0000]JTextFiled[/color] عشان اقدر اجلب النص المكتوب في التكتس فيلد ...



    لما اسوي Compile يظهر لي هذا الخطأ :
    [color=FF0000]local variable text is accessed from within inner class; needs to be declared final[/color]


    هذا هو الكود :



    كود PHP:

    import java
    .awt.event.*; 
    import javax.swing.*; 

    public class 
    outerClass extends JFrame 

        public 
    outerClass() 
        { 
             
    JFrame frame = new JFrame(); 
             
    JPanel panel = new JPanel(); 
              
             
    JTextField text = new JTextField(10); 
             
    JButton button = new JButton("Print the new TEXT"); 
         
             
    panel.addtext );    panel.addbutton ); 
              
             
    frame.setContentPane(panel); 
             
    frame.setSize(300,300); 
             
    frame.setVisible(true); 
              
              
             
    // -------------- Here the action listener for button -------------// 
              
             
    class button implements ActionListener 
             

                 public 
    void actionPerformed(ActionEvent e
                 { 
                     
    System.out.println(" < JTextField > contains : " );
                     
    System.out.printlntext.getText() );
                    
    // ---+[ Here is The PROBLEM ]+--- \\ 
                 

             } 
             
    ActionListener bAction = new button(); 
             
    button.addActionListener(bAction); 
              
        }     
        public static 
    void main(String [] args
        { 
            
    outerClass out = new outerClass(); 
        } 
    }

    [line]


    [color=FF0000]المشكلة : [/color]

    اني احاول استخدام الأوبجيكت (( text )) وهو اصلا معرف داخل الـConstructor ,
    يعني راح يكون " Local Variable ".


    وكما نعلم ان الـ[color=FF0000]Local Variable[/color] لانستطيع استخدامها الا داخل الـBlok تبع الـMethod الي هو موجود فيها .


    اما في البرنامج الموجود اعلى.. فانا عرفته داخل الكونستروكتور (( فصار الحين لوكال فاريبل )) .. وحاولت الدخول اليه من جوا الكونستروكتور بس كمان جوا كلاس inner class .

    هنا المشكلة وعشان كذا راح يقولك عند عمليه الكومبايلينق " انك تحاول الدخول على لوكال فاريبل من داخل اينر كلاس , لازم تخليه Final عشان يقدر يستخدمه " , والمشكلة اذا خليتة [color=FF0000]Final[/color] ماراح تقدر تضيف او تاخذ اي نص راح يكون موجود داخل الـTextField .


    [line]


    [color=FF0000]الحل :[/color]


    عرف الأوبجيكت (( text )) [color=FF0000]خارج الـ constructor[/color] وداخل الـClass الذي يحتوي الـ inner class ,, عشان يكون عام ولا يكون local
    بذلك تكون قد حليت هذي المشكلة .
    وتقدر تستخدم الاوبجيكت في اي مكان داخل الـ[color=FF0000]inner class[/color] .


    [line]


    هذا هو اللبس الذي كان عندي (( وهو ان الانير كلاس يقدر يدخل على كل variables الموجوده في الكلاس الذي يحتوي الانير كلاس حتى لو كان local variable )) مع العلم انه كان جوا الـconstructor .



    الحمد لله اتضحت عندي هذي النقطة , فحبيت اني اضعها بالمنتدى مع العلم ان الآن وقت الـProjectتات واغلب الطلاب يحتاجون الـgetText() , وان شاء الله ماحد يقع في الخطأ الي وقعت فيه .


    والله اعلم .
     
  2. ارحم نفسك

    انضم:
    ‏9 أغسطس 2003
    المشاركات:
    124
    الصفحة الرئيسية:
    التقييمات:
    +0 / 0 / -0
    يعطيك العافية.........

    فعلا هذه مشكلة يواجهها كثير من الطلاب حتى في كورسات متقدمة مثل ICS313 لا يستطيع الطالب أن يفرق بين Global Variable & Local Variable......

    وكما ذكرت أن الLocal لا يمكن أن يستخدم الا في داخل البلوك المعرف به(Scope) >>>
     
  3. دكتور / مجنون

    انضم:
    ‏1 يوليو 2003
    المشاركات:
    2,133
    التخصص:
    N/A
    الجامعة:
    N/A
    سنة التخرج:
    N/A
    الإقامة:
    الظهران
    التقييمات:
    +46 / 1 / -4
    ابسط حل لحل مشكلتك هي

    public class X extends JFrame implements ActionListener {
    ..
    ..

    insertInformationButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent ae) {
    ..
    ..
    }
    }
    }
     
  4. سفمور بوي

    سفمور بوي عـــضو

    انضم:
    ‏29 يوليو 2003
    المشاركات:
    1,385
    التخصص:
    هندسة
    الجامعة:
    جامعة الملك فهد
    سنة التخرج:
    2007
    الوظيفة:
    طالب
    الإقامة:
    الشرقية
    التقييمات:
    +4 / 0 / -0
    سلمت يمناك اخي SWE Student :) :)
    موضوع رائع... ارجوا ان لا تحرمنا من ابداعك :)
    =======
    لك الشكر
     
جاري تحميل الصفحة...
مواضيع شبيهة - ICS201 مشكلة مع الـMember Classes وحلها تفيد الي عندهم Project الآن
  1. sultan112
    الردود:
    4
    المشاهدات:
    17,065
  2. so lost
    الردود:
    6
    المشاهدات:
    1,031
  3. راعي المركيز
    الردود:
    19
    المشاهدات:
    1,241
  4. Just-A-Brother
    الردود:
    8
    المشاهدات:
    4,569
  5. Mjeed
    الردود:
    0
    المشاهدات:
    2,756
  6. Eng.Aziiiz
    الردود:
    4
    المشاهدات:
    3,020
  7. ras12
    الردود:
    1
    المشاهدات:
    3,674
  8. واشنطن
    الردود:
    4
    المشاهدات:
    2,074
  9. الملك الراقي
    الردود:
    8
    المشاهدات:
    2,229
  10. dev9
    الردود:
    1
    المشاهدات:
    489

مشاركة هذه الصفحة