Waseem Alshamiri نشر 26 فبراير أرسل تقرير نشر 26 فبراير (معدل) انا استخدم جافا اطار عمل swing واريد طباعة الجداول او text aree اقصد ارساله الى الطابعة او اظهار ناقذه الطباعه ارجو المساعده تم التعديل في 26 فبراير بواسطة Waseem Alshamiri 3 اقتباس
0 محمد عاطف17 نشر 26 فبراير أرسل تقرير نشر 26 فبراير لطباعة الجداول أو JTextArea يمكنك استخدام واجهة برمجة تطبيقات الطباعة java.awt.print و التي توفرها Java. و لطباعة محتوى JTextArea يمكنك استخدام Printable لإنشاء صفحة قابلة للطباعة. import javax.swing.*; import java.awt.*; import java.awt.print.*; public class PrintTextAreaExample { public static void main(String[] args) { JTextArea textArea = new JTextArea(20, 40); textArea.setText("Text To print"); JButton printButton = new JButton("Print"); printButton.addActionListener(e -> { try { textArea.print(); } catch (PrinterException ex) { ex.printStackTrace(); } }); JFrame frame = new JFrame("طباعة JTextArea"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new JScrollPane(textArea), BorderLayout.CENTER); frame.add(printButton, BorderLayout.SOUTH); frame.pack(); frame.setVisible(true); } } و لطباعة محتوى JTable يمكنك استخدام JTable.PrintMode لطباعة الجدول : import javax.swing.*; import java.awt.*; import java.awt.print.*; public class PrintJTableExample { public static void main(String[] args) { String[] columnNames = {"col 1", "col 2", "col 3"}; Object[][] data = { {"1", "value 1", "value 1"}, {"2", "value 2", "value 2"}, {"3", "value 3", "value 3"} }; JTable table = new JTable(data, columnNames); JButton printButton = new JButton("Print Table"); printButton.addActionListener(e -> { try { table.print(JTable.PrintMode.FIT_WIDTH); } catch (PrinterException ex) { ex.printStackTrace(); } }); JFrame frame = new JFrame(" Print Table"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new JScrollPane(table), BorderLayout.CENTER); frame.add(printButton, BorderLayout.SOUTH); frame.pack(); frame.setVisible(true); } } والآن عند استدعائك لدالة print() على JTextArea أو JTable ستظهر لك نافذة الطباعة الافتراضية . اقتباس
0 Chihab Hedidi نشر 26 فبراير أرسل تقرير نشر 26 فبراير لطباعة الجداول في Java باستخدام Swing، يمكنك استخدام print المتوفر في هذه المكونات، و يمكنك عرض نافذة الطباعة لاختيار الطابعة وإعداداتها قبل الطباعة، يكون الكود بهذا الشكل: try { boolean complete = myTextArea.print(); if (complete) { System.out.println("تمت الطباعة بنجاح!"); } else { System.out.println("تم إلغاء الطباعة."); } } catch (Exception e) { e.printStackTrace(); } try { boolean complete = myTable.print(); // استدعاء دالة الطباعة مباشرة if (complete) { System.out.println("تمت الطباعة بنجاح!"); } else { System.out.println("تم إلغاء الطباعة."); } } catch (Exception e) { e.printStackTrace(); } اقتباس
0 Mustafa Suleiman نشر 26 فبراير أرسل تقرير نشر 26 فبراير الطريقة المدمجة في Swing هي الأسهل لكنها محدودة في التخصيص كالهوامش والتنسيق المتقدم. وذلك من خلال الدالة print() الموجودة مباشرةً في مكونات Swing مثل JTable أو JTextArea، كالتالي: try { boolean printed = table.print(); if (printed) { System.out.println("تمت الطباعة بنجاح!"); } } catch (PrinterException e) { e.printStackTrace(); } ولتخصيص نافذة الطباعة فالمتاح هو إضافة عنوان أو تذييل للصفحة، وتحديد وضع الطباعة مثل ملاءمة الجدول مع عرض الصفحة والتحكم في الهوامش بشكل جزئي. try { boolean printed = table.print( JTable.PrintMode.FIT_WIDTH, " العنوان هنا", "الصفحة: {0}", true, null, true ); } catch (PrinterException e) { e.printStackTrace(); } العنوان والتذييل بإمكانك إضافة نص ثابت مثل التقرير الشهري أو صفحة {0}، ووضع الطباعة كتبت FIT_WIDTH لملاءمة الجدول مع عرض الصفحة. باقي الخيارات true الأولى هي لعرض نافذة الطباعة وnull لتحديد إعدادات الطابعة الافتراضية وtrue الثانية هي للطباعة تفاعليًا أي انتظار المستخدم. ولو أردت طباعة JTextArea مع خط أكبر أو هوامش مُعدة مسبقًا، ستحتاج إلى استخدام Java Print Service API، لأن الطريقة المدمجة لا تدعم ذلك، ولكن تستطيع استخدام الحل التالي كبديل: PrinterJob job = PrinterJob.getPrinterJob(); job.setPrintable((graphics, pageFormat, pageIndex) -> { if (pageIndex > 0) return Printable.NO_SUCH_PAGE; graphics.setFont(new Font("Arial", Font.BOLD, 14)); graphics.drawString(textArea.getText(), 50, 50); // هوامش: 50 نقطة return Printable.PAGE_EXISTS; }); if (job.printDialog()) { try { job.print(); } catch (PrinterException e) { e.printStackTrace(); } } اقتباس
0 Waseem Alshamiri نشر 26 فبراير الكاتب أرسل تقرير نشر 26 فبراير بتاريخ 1 ساعة قال Mustafa Suleiman: الطريقة المدمجة في Swing هي الأسهل لكنها محدودة في التخصيص كالهوامش والتنسيق المتقدم. وذلك من خلال الدالة print() الموجودة مباشرةً في مكونات Swing مثل JTable أو JTextArea، كالتالي: try { boolean printed = table.print(); if (printed) { System.out.println("تمت الطباعة بنجاح!"); } } catch (PrinterException e) { e.printStackTrace(); } ولتخصيص نافذة الطباعة فالمتاح هو إضافة عنوان أو تذييل للصفحة، وتحديد وضع الطباعة مثل ملاءمة الجدول مع عرض الصفحة والتحكم في الهوامش بشكل جزئي. try { boolean printed = table.print( JTable.PrintMode.FIT_WIDTH, " العنوان هنا", "الصفحة: {0}", true, null, true ); } catch (PrinterException e) { e.printStackTrace(); } العنوان والتذييل بإمكانك إضافة نص ثابت مثل التقرير الشهري أو صفحة {0}، ووضع الطباعة كتبت FIT_WIDTH لملاءمة الجدول مع عرض الصفحة. باقي الخيارات true الأولى هي لعرض نافذة الطباعة وnull لتحديد إعدادات الطابعة الافتراضية وtrue الثانية هي للطباعة تفاعليًا أي انتظار المستخدم. ولو أردت طباعة JTextArea مع خط أكبر أو هوامش مُعدة مسبقًا، ستحتاج إلى استخدام Java Print Service API، لأن الطريقة المدمجة لا تدعم ذلك، ولكن تستطيع استخدام الحل التالي كبديل: PrinterJob job = PrinterJob.getPrinterJob(); job.setPrintable((graphics, pageFormat, pageIndex) -> { if (pageIndex > 0) return Printable.NO_SUCH_PAGE; graphics.setFont(new Font("Arial", Font.BOLD, 14)); graphics.drawString(textArea.getText(), 50, 50); // هوامش: 50 نقطة return Printable.PAGE_EXISTS; }); if (job.printDialog()) { try { job.print(); } catch (PrinterException e) { e.printStackTrace(); } } اسخدمة الطريق الاولى print لكن تتم الطباعه بشكل افقي 1 اقتباس
0 Mustafa Suleiman نشر 26 فبراير أرسل تقرير نشر 26 فبراير بتاريخ 4 ساعة قال Waseem Alshamiri: اسخدمة الطريق الاولى print لكن تتم الطباعه بشكل افقي حاول استخدام PageFormat بكتابة التالي PageFormat pageFormat = job.defaultPage() وتعيين الاتجاه العمودي من خلال pageFormat.setOrientation(PageFormat.PORTRAIT) وتمرير pageFormat كمعامل ثاني في setPrintable try { PrinterJob job = PrinterJob.getPrinterJob(); PageFormat pageFormat = job.defaultPage(); // هنا pageFormat.setOrientation(PageFormat.PORTRAIT); job.setPrintable((graphics, pf, pageIndex) -> { if (pageIndex > 0) return Printable.NO_SUCH_PAGE; graphics.setFont(new Font("Arial", Font.BOLD, 14)); graphics.drawString(textArea.getText(), 50, 50); return Printable.PAGE_EXISTS; }, pageFormat); if (job.printDialog()) { job.print(); } } catch (PrinterException e) { e.printStackTrace(); } 1 اقتباس
السؤال
Waseem Alshamiri
انا استخدم جافا اطار عمل swing واريد طباعة الجداول او text aree اقصد ارساله الى الطابعة او اظهار ناقذه الطباعه
ارجو المساعده
تم التعديل في بواسطة Waseem Alshamiri5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.