سؤال

آمل أن يكون من الصحيح أن نقول أن المكونات في واجهة المستخدم الرسومية مثل Jbutton و Jpanel و Jtextfield ، كل هذه الأشياء الجيدة.

أريد إنشاء حقل نص يأخذ عددًا صحيحًا. ثم يمكن الضغط على زر إرسال واستنادًا إلى عدد صحيح تم إدخاله ، قم بإنشاء العديد من حقول النص في نافذة منبثقة أو أي شيء آخر.

ليس لدي أدنى فكرة ، هل يمكن لشخص ما أن يبدأني في الاتجاه الصحيح؟

المشكلة التي أواجهها هي أنه ليس لدي أدنى فكرة عن كيفية إنشاء حلقة لإنشاء مكونات واجهة المستخدم الرسومية. أعني إذا كان لدي حلقة وأفعل شيئًا مثل:

print("JTextField num1 = new JTextField()");

ثم في حلقة ، لن ينشئ سوى حقل نص واحد عندما أريد الكثير. كيف أقوم بإنشاء متغيرات JTextFileds بشكل عام؟

شكرا لمساعدتك...

هل كانت مفيدة؟

المحلول

استخدم LayoutManager المناسب (مثل GridLayout) لإنشاء وإضافة حقول النص الخاصة بك.

for (i = 0; i < numberOfTextFields; i++) {
    JTextField textField = new JTextField();
    container.add(textField);
    /* also store textField somewhere else. */
}

نصائح أخرى

جرب شيئًا كهذا:

List<JTextField> nums = new ArrayList<JTextField>();
JTextField tempField;

for (int i = 0; i < 10; i++) {
    tempField = new JTextField();
    jPanel1.add(tempField); // Assuming all JTextFields are on a JPanel
    nums.add(tempField);
}

لا تنسى تعيين مدير تخطيط مناسب للحاوية. (JPanel1 في هذه الحالة)

سأقوم بإنشاء قائمة لتخزين حقول النص ، وبعد ذلك يمكنك إعادتها عن طريق الفهرس. ثم يمكنك الحصول على العديد من الحقول التي تحتاجها.

List fields = new ArrayList();

// Create as many elements as you need
for (int i = 0; i < numberOfElements; i++){
  JTextField field = new JTextField();
  // Add the fields to some panel so they are shown in the screen.  
  // I assume that the component is called parent panel
  parentPanel.add(field);

  // Store the component in the list so you can retrieve it later
  fields.add(field);
}

// ...

// When you want to retrieve a particular one:

JTextField field = (JTextField)fields.get( indexToRetrieve );
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top