طباعة جدول البيانات JTable مباشرة باستخدام table.print
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: واجهة المستخدم الرسومية Java Swing
صفحة 1 من اصل 1 • شاطر
طباعة جدول البيانات JTable مباشرة باستخدام table.print
اهلا بكم
يوفر العنصر الرسومي #JTable الأساليب التي تتيح لك تنفيذ مهام الطباعة الأساسية والمتقدمة التى تحتاجها إلى طباعة جدول ، وهى الطريقة #print التى تستخدم لطباعة الجدول مباشرة .
تحتوي هذة الطريقة على العديد من النماذج ذات مجموعات الوسائط المختلفة. تعد هذه الطريقة طاولتك ، وتحصل على كائن قابل للطباعة ، وترسله إلى طابعة.
و أسهل طريقة لطباعة الجدول الخاص بك هي استدعاء الطريقة print بدون معلمات.كما فى الشفرة التالية :
لكن عند استدعاء طريقة الطباعة بدون أي معلمات ، يتم عرض مربع حوار طباعة ، ثم تتم طباعة الجدول الخاص بك بشكل تفاعلي في وضع FIT_WIDTH بدون رأس أو تذييل
أما عند استدعاء طريقة الطباعة بكافة المعلمات ، فإنك تستطيع استخدام ميزات الطباعة مثل وضع الطباعة ورأس تذييل الصفحة وسمات الطباعة وأيضًا ما إذا كنت تريد إظهار مربع حوار طباعة أم لا ، وما إذا كنت تريد طباعة بشكل تفاعلي أو غير تفاعلي.
و تلك المعلمات على النحو التالى :
دعونا الان نلقي نظرة على تلك المعلمات وكيفية استخدامها :
1_ المعلمة #PrintMode :
تلك المعلمة مسؤولة عن تحديد وضعية الطباعة التى تحدد قياس المخرجات الطباعة. يمكنك طباعة الجدول الخاص بك في أحد الأوضاع التالية:
في الوضع العادي PrintMode.NORMAL يتم طباعة جدول بحجمه الحالي. إذا لم تتناسب الأعمدة مع الصفحة ، فإنها تنتشر عبر صفحات إضافية وفقًا لـ #ComponentOrientation في الجدول.
أما في وضع FIT_WIDTH ، يكون للجدول حجم أصغر ، إذا لزم الأمر ، لملاءمة جميع الأعمدة في كل صفحة. لاحظ أن كلا من العرض والارتفاع يتم قياسهما لتوفير إخراج بنفس نسبة الارتفاع. في كلا الوضعين ، تنتشر الصفوف عبر عدة صفحات بالتتابع مع أكبر عدد ممكن من الصفوف على الصفحة.
2_ المعلمتين #headerFormat# / footerFormat
تم توفير الرؤوس والتذييلات بواسطة معلمات #MessageFormat. تسمح هذه المعلمات بتنسيق نص لرأس وتذييل الصفحة. على النحو التالى :
يمكنك ملاحظة من الشفرة اعلاه أنه يمكنك إدراج رقم صفحة باستخدام {0}.
3_ المعلمة #showPrintDialog
تسميح هذه المعلمة باظهار مربع حوار الطباعة التى يمكنك من خلالة أن تحدد طابعة , عدد النسخ , تغيير سمات الطباعة ,إلغاء الطباعة قبل أن تبدأ ....الخ
قد تلاحظ أن مربع حوار الطباعة لا يحدد العدد الإجمالي للصفحات في النسخة المطبوعة. وذلك لأن تطبيق طباعة الجدول يستخدم واجهة برمجة التطبيقات القابلة للطباعة وأن العدد الإجمالي للصفحات غير معروف قبل وقت الطباعة
4_المعلمة #interactive
هذه المعلمة تحدد وضع الطباعة بشكل تفاعلي أو غير تفاعلي ...في الوضع التفاعلي ، يظهر مربع حوارى لظهر تقدم عملية الطباعة مع خيار إلغاء الطباعة كما فى الصورة التالية :
أما فى الوضع غير التفاعلى يمكنك طباعة الجدول الخاص مباشرة ، تبدأ الطباعة فورًا في مؤشر ترابط إرسال الأحداث وتمنع تمامًا أي أحداث تتم معالجتها. من ناحية ، يحتفظ هذا الوضع بأمان الجدول ضد أي تغييرات حتى تتم الطباعة
واليكم مثال كامل لعملية الطباعة الجدول مع بعض التنسيق :
يوفر العنصر الرسومي #JTable الأساليب التي تتيح لك تنفيذ مهام الطباعة الأساسية والمتقدمة التى تحتاجها إلى طباعة جدول ، وهى الطريقة #print التى تستخدم لطباعة الجدول مباشرة .
تحتوي هذة الطريقة على العديد من النماذج ذات مجموعات الوسائط المختلفة. تعد هذه الطريقة طاولتك ، وتحصل على كائن قابل للطباعة ، وترسله إلى طابعة.
و أسهل طريقة لطباعة الجدول الخاص بك هي استدعاء الطريقة print بدون معلمات.كما فى الشفرة التالية :
- الكود:
try {
table.print();
} catch (PrinterException pe) {
System.err.println("Error printing: " + pe.getMessage());
}
لكن عند استدعاء طريقة الطباعة بدون أي معلمات ، يتم عرض مربع حوار طباعة ، ثم تتم طباعة الجدول الخاص بك بشكل تفاعلي في وضع FIT_WIDTH بدون رأس أو تذييل
أما عند استدعاء طريقة الطباعة بكافة المعلمات ، فإنك تستطيع استخدام ميزات الطباعة مثل وضع الطباعة ورأس تذييل الصفحة وسمات الطباعة وأيضًا ما إذا كنت تريد إظهار مربع حوار طباعة أم لا ، وما إذا كنت تريد طباعة بشكل تفاعلي أو غير تفاعلي.
و تلك المعلمات على النحو التالى :
- الكود:
boolean complete = table.print(JTable.PrintMode printMode,
MessageFormat headerFormat,
MessageFormat footerFormat,
boolean showPrintDialog,
PrintRequestAttributeSet attr,
boolean interactive,
PrintService service);
دعونا الان نلقي نظرة على تلك المعلمات وكيفية استخدامها :
1_ المعلمة #PrintMode :
تلك المعلمة مسؤولة عن تحديد وضعية الطباعة التى تحدد قياس المخرجات الطباعة. يمكنك طباعة الجدول الخاص بك في أحد الأوضاع التالية:
- PrintMode.NORMAL
- PrintMode.FIT_WIDTH
في الوضع العادي PrintMode.NORMAL يتم طباعة جدول بحجمه الحالي. إذا لم تتناسب الأعمدة مع الصفحة ، فإنها تنتشر عبر صفحات إضافية وفقًا لـ #ComponentOrientation في الجدول.
أما في وضع FIT_WIDTH ، يكون للجدول حجم أصغر ، إذا لزم الأمر ، لملاءمة جميع الأعمدة في كل صفحة. لاحظ أن كلا من العرض والارتفاع يتم قياسهما لتوفير إخراج بنفس نسبة الارتفاع. في كلا الوضعين ، تنتشر الصفوف عبر عدة صفحات بالتتابع مع أكبر عدد ممكن من الصفوف على الصفحة.
2_ المعلمتين #headerFormat# / footerFormat
تم توفير الرؤوس والتذييلات بواسطة معلمات #MessageFormat. تسمح هذه المعلمات بتنسيق نص لرأس وتذييل الصفحة. على النحو التالى :
- الكود:
MessageFormat header = new MessageFormat("تقرير بيانات الطلاب");
MessageFormat footer = new MessageFormat("Page - {0}");
يمكنك ملاحظة من الشفرة اعلاه أنه يمكنك إدراج رقم صفحة باستخدام {0}.
3_ المعلمة #showPrintDialog
تسميح هذه المعلمة باظهار مربع حوار الطباعة التى يمكنك من خلالة أن تحدد طابعة , عدد النسخ , تغيير سمات الطباعة ,إلغاء الطباعة قبل أن تبدأ ....الخ
قد تلاحظ أن مربع حوار الطباعة لا يحدد العدد الإجمالي للصفحات في النسخة المطبوعة. وذلك لأن تطبيق طباعة الجدول يستخدم واجهة برمجة التطبيقات القابلة للطباعة وأن العدد الإجمالي للصفحات غير معروف قبل وقت الطباعة
4_المعلمة #interactive
هذه المعلمة تحدد وضع الطباعة بشكل تفاعلي أو غير تفاعلي ...في الوضع التفاعلي ، يظهر مربع حوارى لظهر تقدم عملية الطباعة مع خيار إلغاء الطباعة كما فى الصورة التالية :
أما فى الوضع غير التفاعلى يمكنك طباعة الجدول الخاص مباشرة ، تبدأ الطباعة فورًا في مؤشر ترابط إرسال الأحداث وتمنع تمامًا أي أحداث تتم معالجتها. من ناحية ، يحتفظ هذا الوضع بأمان الجدول ضد أي تغييرات حتى تتم الطباعة
واليكم مثال كامل لعملية الطباعة الجدول مع بعض التنسيق :
- الكود:
private void print_Table() {
MessageFormat header = new MessageFormat("تقرير بيانات الطلاب");
MessageFormat footer = new MessageFormat("Page - {0}");
try {
/* print the table */
boolean complete = jTable1.print(JTable.PrintMode.FIT_WIDTH, header, footer,
true, null,
true, null);
/* if printing completes */
if (complete) {
/* show a success message */
JOptionPane.showMessageDialog(this,
"تم الطباعة",
"حالة الطباعة",
JOptionPane.INFORMATION_MESSAGE);
} else {
/* show a message indicating that printing was cancelled */
JOptionPane.showMessageDialog(this,
"إلغاء الطباعة",
"حالة الطباعة",
JOptionPane.INFORMATION_MESSAGE);
}
} catch (PrinterException pe) {
/* Printing failed, report to the user */
JOptionPane.showMessageDialog(this,
"خطأ : " + pe.getMessage(),
"معلومات الطباعة",
JOptionPane.ERROR_MESSAGE);
}
}
السنى- ........
- تاريخ التسجيل : 18/02/2011
المساهمات : 249
النقاط : 465
التقيم : 26
الجنس :
رد: طباعة جدول البيانات JTable مباشرة باستخدام table.print
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
mergac- .
- تاريخ التسجيل : 03/11/2019
المساهمات : 7
النقاط : 8
التقيم : 1
الدولة :
الجنس :
رد: طباعة جدول البيانات JTable مباشرة باستخدام table.print
موضوع هام شكرا جزيلا
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
NEXT- الادارة
- تاريخ التسجيل : 18/02/2011
المساهمات : 446
النقاط : 200660
التقيم : 28
الدولة :
الجنس :
| |
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: واجهة المستخدم الرسومية Java Swing
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
أمس في 2:36 pm من طرف nadya
» شراء اغراض مستعملة بالكويت بأعلى سعر - الدليل
أمس في 2:21 pm من طرف nadya
» شراء اثاث مستعمل الجهراء - بأعلى سعر - الدليل
أمس في 2:05 pm من طرف nadya
» تركيب مخيمات الكويت - جودة عالية خصم 20 %- الدليل
أمس في 1:47 pm من طرف nadya
» اغتنم فرصة الحصول على مدافن للبيع بمساحات مختلفة فى كل مكان فى مصر - القاهرة الجديدة
أمس في 1:40 pm من طرف ندا عمر
» افضل موقع مقابر للبيع بالقاهرة الجديدة 20% خصم
أمس في 1:29 pm من طرف ندا عمر
» مقابر وادي الراحة للبيع بأفضل الأسعار بخصم 20%
أمس في 1:18 pm من طرف ندا عمر
» مقابر للبيع بالقاهرة الجديدة بتسهيلات في السداد | سما الاقصى للمقاولات
أمس في 1:15 pm من طرف ندا عمر
» شراء اثاث مستعمل الكويت - بأعلى سعر - الدليل
أمس في 1:11 pm من طرف nadya
» مقابر طريق العين السخنه للبيع 20% من سما الاقصى
أمس في 12:59 pm من طرف ندا عمر