Ahmed Sawy نشر 25 يوليو 2020 أرسل تقرير نشر 25 يوليو 2020 ما هو الخطأ فى هذه الدالة قمت بعمل برنامج يعرض منتج مع الصورة والاسم والسعر .. ولكن عندما اضغط اضافة لمنتج جديد تظهر لى مربعات خانات اضافية كما فى هذه الصورة بمعنى رقم 9 و 10 و 11 تم تكراره مرتين ولكن اذا اغلقت البرنامج وفتحته يختفى تانى .. واذا ضغط عليه يظهر لى الخطأ اللى فى الصورة الاولى هذه دالة أخرى ممكن يكون الخطأ فيها .. وشكرا مقدما اقتباس
0 Yomna Raouf نشر 25 يوليو 2020 أرسل تقرير نشر 25 يوليو 2020 ما لاحظته في الكود الخاص بخضرتك أنه في كل مرة تضيف فيها منتج جديد إلى الجدول يتم إضافة هذا المنتج إلى قائمة المنتجات. فيصبح محتوى تلك القائمة هو المنتجات الموجودة مسبقا بالإضافة إلى المنتج الجديد. بعد ذلك تقوم بعمل for loop على القائمة بأكملها لتعرض كل محتوياتها في الجدول (المنتجات السابقة مع المنتج الجديد) . أحد حلول هذه المشكلة: مثلًا تستخدم جملة شرطية (if statement) داخل ال for loop لتقارن بين ال ids الخاصة بالمنتجات الموجودة بالقائمة و ال ids الخاصة بالمنتجات المعروضة بالجدول. فإذا كان المنتج موجود في الجدول لا تضيفه و تكمل الدورة و إن لم يكن موجود في الجدول تقوم بعرضه في الجدول. يمكنك تجربة الكود التالي أيضًا: هذا الكود يستخدم batch insert لإضافة المنتجات إلى الجدول. try { connection con.setAutoCommit(false); PreparedStatement prepStmt = con.prepareStatement( "insert into product(code,name,price,available) values (?,?,?,?"); Iterator<Product> it = li.iterator(); while(it.hasNext()){ Product p = it.next(); prepStmt.setString(1,p.getCode()); prepStmt.setString(2,p.getCode()); prepStmt.setInt(3,p.getPrice()); prepStmt.setBoolean(4,p.isAvailable()); prepStmt.addBatch(); } int [] numUpdates=prepStmt.executeBatch(); for (int i=0; i < numUpdates.length; i++) { if (numUpdates[i] == -2) System.out.println("Execution " + i + ": unknown number of rows updated"); else System.out.println("Execution " + i + "successful: " + numUpdates[i] + " rows updated"); } con.commit(); } catch(BatchUpdateException b) { // process BatchUpdateException } اقتباس
0 Ahmed Sawy نشر 25 يوليو 2020 الكاتب أرسل تقرير نشر 25 يوليو 2020 بتاريخ 1 ساعة قال Yomna Raouf: مثلًا تستخدم جملة شرطية (if statement) داخل ال for loop لتقارن بين ال ids الخاصة بالمنتجات الموجودة بالقائمة و ال ids الخاصة بالمنتجات المعروضة بالجدول. فإذا كان المنتج موجود في الجدول لا تضيفه و تكمل الدورة و إن لم يكن موجود في الجدول تقوم بعرضه في الجدول. كيف اقوم بهذه الجملة الشرطية ؟ اقتباس
0 Yomna Raouf نشر 26 يوليو 2020 أرسل تقرير نشر 26 يوليو 2020 ما كنت اقصده هو: for (int i = 0; i< list.lenght ;i++){ for (int j =0; j< (عدد صفوف الجدول الحالية) ; j++) { if (اّي دي العنصر رقم اّي في القانمة لا يساوي اّي دي العنصر رقم جي في الجدول){ // قم بإضافة المنتج الجديد إلى الجدول } } } أو إستخدام الطريقة التالية: // يمكنك إستخدام الطريقة التالية // هنا تقوم بصناعة الجدول الذي ستضيف إليه المنتجات DefaultTableModel CurrentPurchases= new DefaultTableModel(); Pname=rs.getString("ProductName"); Price=rs.getString("Price"); CurrentPurchases.addRow(new Object[]{Pname,Price}); // You need to get model from your table, to which you want to add a new row. For example you have 2 methods for creation table and for adding row to that table // يجب أن تمتلك موديل من الجدول الذي ستضيف له الصفوف // فمثلًا سيكون عندك 2 methods // إحداها من أجل صنع الجدول و الأخري من أجل إضافة الصفوف // كما يلي: public void init() { targetTable = new JTable(new DefaultTableModel()); } public void addRow(){ ((DefaultTableModel)targetTable.getModel()).addRow(new Object[]{}); } // here targetTable it is your table(CurrentPurchases). You need to have reference to that. يمكنك قراءة المقال التالي كيف تستخدم jtable . ستجد فيه مثال مشروح مشابه لما تريد تنفيذه. اقتباس
0 Ahmed Sawy نشر 26 يوليو 2020 الكاتب أرسل تقرير نشر 26 يوليو 2020 بتاريخ منذ ساعة مضت قال Yomna Raouf: ما كنت اقصده هو: for (int i = 0; i< list.lenght ;i++){ for (int j =0; j< (عدد صفوف الجدول الحالية) ; j++) { if (اّي دي العنصر رقم اّي في القانمة لا يساوي اّي دي العنصر رقم جي في الجدول){ // قم بإضافة المنتج الجديد إلى الجدول } } } أو إستخدام الطريقة التالية: // يمكنك إستخدام الطريقة التالية // هنا تقوم بصناعة الجدول الذي ستضيف إليه المنتجات DefaultTableModel CurrentPurchases= new DefaultTableModel(); Pname=rs.getString("ProductName"); Price=rs.getString("Price"); CurrentPurchases.addRow(new Object[]{Pname,Price}); // You need to get model from your table, to which you want to add a new row. For example you have 2 methods for creation table and for adding row to that table // يجب أن تمتلك موديل من الجدول الذي ستضيف له الصفوف // فمثلًا سيكون عندك 2 methods // إحداها من أجل صنع الجدول و الأخري من أجل إضافة الصفوف // كما يلي: public void init() { targetTable = new JTable(new DefaultTableModel()); } public void addRow(){ ((DefaultTableModel)targetTable.getModel()).addRow(new Object[]{}); } // here targetTable it is your table(CurrentPurchases). You need to have reference to that. يمكنك قراءة المقال التالي كيف تستخدم jtable . ستجد فيه مثال مشروح مشابه لما تريد تنفيذه. للأسف لم تنفع اى الحلول .. لكن شكرا لمجهودك اقتباس
السؤال
Ahmed Sawy
ما هو الخطأ فى هذه الدالة
قمت بعمل برنامج يعرض منتج مع الصورة والاسم والسعر .. ولكن عندما اضغط اضافة لمنتج جديد تظهر لى مربعات خانات اضافية كما فى هذه الصورة
بمعنى رقم 9 و 10 و 11 تم تكراره مرتين ولكن اذا اغلقت البرنامج وفتحته يختفى تانى .. واذا ضغط عليه يظهر لى الخطأ اللى فى الصورة الاولى
هذه دالة أخرى ممكن يكون الخطأ فيها ..
وشكرا مقدما
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.