الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

لمبرمجي جافا: هذه طريقة تقليدية للطباعة وأبحث عن طريقة أكثر مرونة

مغلق
بدأه sabd1983 في 4 يناير 2007 · 5 رد · 760 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم وكل عام وأنتم بخير, وبعد:

الطريقة التقليدية للطباعة في جافا والتي أستخدمها حتى الآن هي تحقيق الواجهة Printaple واستخدام الصف PrinterJob الموجود في الحزمة java.awt.print وللتمكن من اجراء الطباعة عليك تحقيق الطريقة print والتي أحد وسطائها غرض من الصف Graghics وباستخدام الطريقة drawString من هذا الغرض تتمكن من طباعة النص الذي مررته لهذه الطريقة ولكن عليك تحديد موقع ظهور هذا النص في الورقة بتحديد الابعاد بالبكسل، واليك هذا المثال ليوضح ما قلته:

[code]import java.awt.*;
import java.awt.print.*;

public class Printer implements Printable {
  public static void main(String[] args)
  {
	PrinterJob job = PrinterJob.getPrinterJob();
	job.setPrintable(new Printer());
	if (job.printDialog())
	{
	  try
	  { job.print(); }
	  catch (Exception e)
	  { System.out.print(e.toString()); }
	}
  }

  public int print(Graphics g, PageFormat pf, int pageIndex)
	  throws PrinterException
  {
	g.setFont(new Font("Arial", Font.PLAIN, 16));
	g.drawString("Printing in JAVA is easy!!!!!!!",
 100, 100);
	return Printable.PAGE_EXISTS;
  }
}

هذا المثال مناسب لطباعة نص صغير ولكن المشكلة عندما تريد طباعة عدة نصوص وبتنسيق معين فهذه الطريقة صعبة جدا حيث انك مضطر لتحديد موقع كل عبارة أو جملة بالبكسل، وهو ما أعاني منه الان .

والطلب هو طريقة أخرى أكثر مرونة تمكنك من طباعة البيانات كما هي . ولكم جزيل الشكر.

#2

طباعة البيانات كما هي؟!؟!

ماذا تقصد؟ بيانات جدول مثلا؟

يخيل إلي أن JTable تحوي أوامر للطباعة..

#3

إذا كنت تتعامل مع جدول ... إنشاء تقرير قد يريحك

تم تعديل هذه المشاركة بواسطة malek_sa في 7 يناير 2007 في 02:22

SCJP 5.0

#4

السلام عليكم..

أبغى أمر لطباعة (جدول)... أرجوكم بسرعة...

أخوك

مستر جافا

#5
malek_sa كتب:
إذا كنت تتعامل مع جدول ... إنشاء تقرير قد يريحك

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

ولك جزيل الشكر

عبدالله الصباغ

سوريا

#6
	private void printTable(String header, String footer) {
		MessageFormat headerFmt;
		MessageFormat footerFmt;
		JTable.PrintMode printMode = JTable.PrintMode.FIT_WIDTH;
		if (header != null && header.length() > 0) {
			headerFmt = new MessageFormat(header);
		} else {
			headerFmt = null;
		}
		if (footer != null && footer.length() > 0) {
			footerFmt = new MessageFormat(footer);
		} else {
			footerFmt = null;
		}
		try {
			boolean status = jTableResult.print(printMode, headerFmt, footerFmt);
			if (status) {
				JOptionPane.showMessageDialog(this,
											  PhConfig.getConstant(PhConsts.
						MESSAGE_LABEL_PRINT_COMPLEETED),
											  PhConfig.getConstant(PhConsts.
						MESSAGE_LABEL_PRINT),
											  JOptionPane.INFORMATION_MESSAGE);
			} else {
				JOptionPane.showMessageDialog(this,
											  PhConfig.getConstant(PhConsts.
						MESSAGE_LABEL_PRINT_CANCELED),
											  PhConfig.getConstant(PhConsts.
						MESSAGE_LABEL_PRINT),
											  JOptionPane.INFORMATION_MESSAGE);
			}
		} catch (PrinterException pe) {
			JOptionPane.showMessageDialog(this, pe.getMessage(),
										  PhConfig.getConstant(PhConsts.
					MESSAGE_LABEL_PRINT_ERROR),
										  JOptionPane.ERROR_MESSAGE);
		}
	}

Haytham A. Mahmoud

PhSoft

When No Others

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…