السلام عليكم
في تطبيق : عندي اربعة radioButton يجمعهم group
هل فيه طريقة اعرفة بها أسم المتغير الي تم اختيارة.
اسم المتغير وليس ال text .
وشكراا
السلام عليكم
في تطبيق : عندي اربعة radioButton يجمعهم group
هل فيه طريقة اعرفة بها أسم المتغير الي تم اختيارة.
اسم المتغير وليس ال text .
وشكراا
.jpg)
على حد علمي لايوجد؛؛ لانك لو صممت البرنامج بالشكل المناسب فصدقني انه من المستحيل ان تحتاج لمعرفة اسم الكائن.
طبعا هذا الكلام ليس من عندي ولكن اذكر اني قرأت مقالة او سؤال في موقع صن كان قريب لسؤالك.
هل من الممكن ان تخبرنا لماذا تود معرفة اسم الكائن؟ ودعنا نتناقش؟
اسف سوف اقطعك من كتابة الكود، ادخل هنا لدقيقتين فقط
نعم دعنا نتاقش
Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why
كما قال الاخوة
اقتباسانه من المستحيل ان تحتاج لمعرفة اسم الكائن
ولكن لامكانك عبر فحص بسيط ( if ...else )
ان تعرف اسم المتغير
منقطع من حين لاخر
اخي ابو الفؤاد:
انا قلت من المستحيل انت تحتاج لمعرفة .. وليس من المستحيل معرفة...
ممكن توضح لنا الطريقة ذكرتها ؟؟
اسف سوف اقطعك من كتابة الكود، ادخل هنا لدقيقتين فقط
حاولت معرفت اسم الكائن بطريقه لترقيم ال radio ا 1,2,3,4 على التوالي،
و طريقة اخرى لمعرفت الكائن وتسميته بـ if .. else
وقبل ما ابدء في التنفيذ تذكرت المثل الى يقول " وين أذنك يا حبشي ".
لان فعلا اسم الكائن ما يفيدني، على الاقل في هذا الوقت.
اقتباسمن المستحيل ان تحتاج لمعرفة اسم الكائن
ممكن يكون الاحتياج لمعرفة اسم الكائن نادرة او قليله بس ما هي مستحيله
مثال:
لو عندي 4 radio معرفه باسماء A,B,C,D
وهي خيارات لاجابه على سؤال
ولمعرفة الفقره التي اختارها المستخدم سأحتاج الى اسم المكون ( A أو B أو C أو D )،
وهذا ما احتاج اليه في تجربتي هذي.
بدلا من اللفه الطويله و استخدام if..else
ارجوا ان تكون الفكره واضحه
.jpg)
اقتباسولمعرفة الفقره التي اختارها المستخدم سأحتاج الى اسم المكون ( A أو B أو C أو D )،
ماذا عن هذه الطريقة:
اعمل مصفوفة فيها 4 عناصر من نوع radio كالتالي:
JRadioButton [] radioArray = new JRadioButton [4];
radioArray[0] = new JRadioButton("Choice 1");
radioArray[1] = new JRadioButton("Choice 2");
radioArray[2] = new JRadioButton("Choice 3");
radioArray[3] = new JRadioButton("Choice 4");وبعد ذلك يمكننا التحقق وذلك باستخدام رقم العنصر بالمصفوفة بدلا من A ,B ,C , D .. واطن ذلك افضل.
اذا كنت مصمم على استخدام A,B,C,D فلماذا لاتعمل فئة جديدة كالتالي:
import javax.swing.JRadioButton;
public class MyRadio extends JRadioButton{
private char letter;
public MyRadio(String label , char letter) {
super(label);
this.letter = letter;
}
public char getLetter(){
return this.letter;
}
}وبعد ذلك استخدم هذه الفئة.
اسف سوف اقطعك من كتابة الكود، ادخل هنا لدقيقتين فقط
أعتقد أن -alt- يواجه مشكلة معرفة الـ radio الذي تم اختياره،، فهو مثلا عنده الشفرة الطويلة التالية،، لاحظ أنه يريد معرفة (اسم == ْrefference) الـ radio الذي تم اختياره،
public void actionPerfomed(ActionEvent e){
if(e.getSource()==radio1);/////
if(e.getSource()==radio2
..
..
..
وهكذاصفحاتي: صفحة حسام الملحم www.hussam.ws مدونة
آخر المشاريع: مشروع لغة برمجة عربية شيئية التوجه
ألعاب على الجوال : 1-(لعبة O X على الجوال ) 2-(لعبة الرقم السري على الجوال ) 3-(لعبة آخر حبة على الجوال )
ألعاب على الحاسب: لعبة الوزراء الثمان ، لعبة شطرنج ، لعبة التركيب Tetris
مواضيعي:
الفرق الجذري بين الجافا و C# شرح التعامل مع WTK لبرمجة الجوالات
مشاركاتي:
برنامج (كاتب) للكاتب فهد OMLX، برنامج (المحول) للكاتب فهد OMLX، برنامج (Unit Storm) للكاتب بشير C&Dell، أيهما أكبر الأعداد الصحيحة أم الطبيعية للكاتب Romanof، سؤال رياضي بحت للكاتب VB6-Rocket، التحدي الكبير للكاتب ANSI،
في الواقع الأمر ممكن جداً، وببساطة (لكن ليس كثيراً :) !!! )
إن القيام بهذه العملية يتطلب استخدام تقنية الانعكاس RTTI ـ (Runtime Type Identification).
ولكن متى تحتاج إلى استخدام هذه التقنية؟؟
أولاً عندما تكون تريد بناء مترجم عكسي، أو إذا كنت تستخدم صفوف غير موثقة. ولكن الحالة الأكثر توقعاً هي أنك بعد إذا أنشأت صفوفاً ووزعتها لفريق عملك أو كبرامج جاهزة، ولكن لا ترغب بتعديل هذه الصفوف (ربما لضخامة الشيفرة أو لأي سبب آخر). عندها ليس لديك حل سوى RTTI.
وهذا مثال على ذلك. (لم أستخدم RadioButton لأني لا أريد استخدام واجهات حتى لا تضيع الفكرة، ولكن الطريقة واحدة).
public class Test {
static String s1 = "True";
static String s2 = "False";
public static void main(String[] args) {
Test test = new Test();
try {
if (test.getClass().getDeclaredFields()[0].getName().equals("s1"))
System.out.println(test.getClass().getDeclaredField("s1").getName()
+ " = " +
test.getClass().getDeclaredField("s1").get(null));
}
catch (SecurityException ex) {
}
catch (NoSuchFieldException ex) {
}
catch (IllegalAccessException ex) {
}
catch (IllegalArgumentException ex) {
}
}
}أفضل أن تجربوها حتى تروا ماذا سوف يكون الناتج، فهو سوف يشرح ماذا حصل.
الشيفرة بسيطة، فقد استخدمت حقول ساكنة بدلاً من RadioButton. والمهم في الشيفرة كما هو واضح شرط if والسطر التالي.
لا حظوا كيف استطعت معرفة اسم الحقل، ومعرفة قيمته. كما يمكن أيضاً معرفة نمطه وأكثر من ذلك.
راجعوا توثيق Java من أجل المزيد عن تقنية RTTI.
فعلا انت رائع اخي MMSs. معلومة جدا مفيدة؛ ولو انني لم افهم الهدف منها تماما؛ ولكن انت اعطيتنا مفتاح المعلومة.
اسف سوف اقطعك من كتابة الكود، ادخل هنا لدقيقتين فقط
ما ذكره الاخ ابو مازن هو الطريقة المثلى لعمل ذلك.
ما كتبه الاخ MMSs يفي بالمطلوب لكن لا ننسى ان استخدام getClass() وما بعده هو جزء من ال reflection الغير منصوح بها في كل اللغات لانها عالية التكلفة و تبطيء النظام.
تم تعديل هذه المشاركة بواسطة madani في 24 أكتوبر 2005 في 15:43
هذا الموضوع مغلق.