ملك
02-11-2005, 07:42 AM
السلام عليكم ورحمة الله وبركاتة
كانت عندي مشكلة عقدتني لمدة 4 ايام في استخدام الـ ()getText والـ()setText اMethods
لما استخدمها مع الـ JTextFiled عشان اقدر اجلب النص المكتوب في التكتس فيلد ...
لما اسوي Compile يظهر لي هذا الخطأ :
local variable text is accessed from within inner class; needs to be declared final
+----------------------------------------------------------------------------------------------------------------------------------------------+
|
|
+------ المشكلة :
|
| اني احاول استخدام الأوبجيكت (( text )) وهو اصلا معرف داخل الـConstructor ...
|
| يعني راح يكون " Local Variable ".
|
|
| وكما نعلم ان الـLocal Variable لانستطيع استخدامها الا داخل الـBlok تبع الـMethod الي هو موجود فيها ...
|
|
|
| اما في البرنامج الموجود تحت .. فانا عرفته داخل الكونستروكتور (( فصار الحين لوكال فاريبل )) .. وحاولت الدخول | اليه من جوا الكونستروكتور بس كمان جوا كلاس inner class ...
|
| هنا المشكلة وعشان كذا راح يقولك عند عمليه الكومبايلينق " انك تحاول الدخول على لوكال فاريبل من داخل اينر | كلاس , لازم تخليه Final عشان يقدر يستخدمه ..."
|
|
|
+----------------------------------------------------------------------------------------------------------------------------------------------+
|
+------ الحل :
|
|
| عرف الـtext خارج الـ constructor وداخل الـClass الذي يحتوي الـ inner class ... عشان يكون عام ولا يكون local
| بذلك تكون قد حليت هذي المشكلة ... وتقدر تستخدم الاوبجيكت في اي مكان داخل الـinner class .
|
+----------------------------------------------------------------------------------------------------------------------------------------------+
هذا هو اللبس الذي كان عندي (( وهو ان الانير كلاس يقدر يدخل على كل variables الموجوده في الكلاس الذي | يحتوي الانير كلاس ... )) مع العلم انه كان جوا الـconstructor ..
الحمد لله اتضحت عندي هذي النقطة .. فحبيت اني افيد اخواني المهتمين بالبرمجة بلغة الـJava
لكي لايقعون في هذا الخطأ كما وقعت .. مع العلم ان المتمكن من هذه اللغة لن يحتاج لهذا الموضوع.
وللاستزاده هذا هو الكود :
وهو مثال تطبيقي لما تم شرحه .
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.add( text ); panel.add( button );
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( " I want to print what does < JTextField > contain !" );
// System.out.println( text.getText() ); // ---+[ Here is The PROBLEM ]+--- \\
// Try to remove the comment above and see what happen ..!
// Is there any method can be used to get the text ?
}
}
ActionListener bAction = new button();
button.addActionListener(bAction);
}
public static void main(String [] args)
{
outerClass out = new outerClass();
}
}
جعلنا الله واياكم من من تعتق رقابهم يوم القيامة من النار في هذا الشهر الفضيل
وكل عام وانتم بخير
والله تعالى اعلم ...
كانت عندي مشكلة عقدتني لمدة 4 ايام في استخدام الـ ()getText والـ()setText اMethods
لما استخدمها مع الـ JTextFiled عشان اقدر اجلب النص المكتوب في التكتس فيلد ...
لما اسوي Compile يظهر لي هذا الخطأ :
local variable text is accessed from within inner class; needs to be declared final
+----------------------------------------------------------------------------------------------------------------------------------------------+
|
|
+------ المشكلة :
|
| اني احاول استخدام الأوبجيكت (( text )) وهو اصلا معرف داخل الـConstructor ...
|
| يعني راح يكون " Local Variable ".
|
|
| وكما نعلم ان الـLocal Variable لانستطيع استخدامها الا داخل الـBlok تبع الـMethod الي هو موجود فيها ...
|
|
|
| اما في البرنامج الموجود تحت .. فانا عرفته داخل الكونستروكتور (( فصار الحين لوكال فاريبل )) .. وحاولت الدخول | اليه من جوا الكونستروكتور بس كمان جوا كلاس inner class ...
|
| هنا المشكلة وعشان كذا راح يقولك عند عمليه الكومبايلينق " انك تحاول الدخول على لوكال فاريبل من داخل اينر | كلاس , لازم تخليه Final عشان يقدر يستخدمه ..."
|
|
|
+----------------------------------------------------------------------------------------------------------------------------------------------+
|
+------ الحل :
|
|
| عرف الـtext خارج الـ constructor وداخل الـClass الذي يحتوي الـ inner class ... عشان يكون عام ولا يكون local
| بذلك تكون قد حليت هذي المشكلة ... وتقدر تستخدم الاوبجيكت في اي مكان داخل الـinner class .
|
+----------------------------------------------------------------------------------------------------------------------------------------------+
هذا هو اللبس الذي كان عندي (( وهو ان الانير كلاس يقدر يدخل على كل variables الموجوده في الكلاس الذي | يحتوي الانير كلاس ... )) مع العلم انه كان جوا الـconstructor ..
الحمد لله اتضحت عندي هذي النقطة .. فحبيت اني افيد اخواني المهتمين بالبرمجة بلغة الـJava
لكي لايقعون في هذا الخطأ كما وقعت .. مع العلم ان المتمكن من هذه اللغة لن يحتاج لهذا الموضوع.
وللاستزاده هذا هو الكود :
وهو مثال تطبيقي لما تم شرحه .
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.add( text ); panel.add( button );
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( " I want to print what does < JTextField > contain !" );
// System.out.println( text.getText() ); // ---+[ Here is The PROBLEM ]+--- \\
// Try to remove the comment above and see what happen ..!
// Is there any method can be used to get the text ?
}
}
ActionListener bAction = new button();
button.addActionListener(bAction);
}
public static void main(String [] args)
{
outerClass out = new outerClass();
}
}
جعلنا الله واياكم من من تعتق رقابهم يوم القيامة من النار في هذا الشهر الفضيل
وكل عام وانتم بخير
والله تعالى اعلم ...