Proje çalışmam için Java'da bir masaüstü uygulaması geliştiriyorum. Alt toplam ve toplam alanlara sahip bir faturayı JTable
'dan tablo verileriyle birlikte yazdırmam gerekiyor. Tabloyu yazdırabilirim ancak aynı sayfada değil. JTable, ilk sayfada ve alt toplamda, bir sonraki sayfadaki toplam baskılarda yazdırır. Her iki veriyi aynı sayfaya yazdırmanın bir yolu var mı? Raporlama motorlarını kullanmak istemiyorum. Sadece dahili java yazdırma servislerini kullanın. Lütfen bana yol göster. Istediğim gibiJTable ve Java'daki diğer textfields yazdırma
Baskı Biçimi:
ardından figür Kullanıcı arabirimi
gösterir Ve Aşağıdaki şekilde ben şimdiye kadar alıyorum raporu gösterir. Onun doğru biçimde değil.
JLabel title = new JLabel();
title.setText("Invoice");
title.setBounds(300, 200, 80, 30);
JTextField subTotal = new JTextField();
subTotal.setText("Sub Total : Rs. " + SubTotal.getText());
subTotal.setBounds(400, 200, 150, 30);
MyPrintable prt = new MyPrintable();
prt.addComponent(title);
prt.addComponent(billTable); //billTable is the JTable
prt.addComponent(subTotal);
prt.printIt();
aşağıdaki Ve altındaki My Yazdırılabilir sınıftır olarak yardım edin
Kod olan
class MyPrintable implements Printable
{
private ArrayList<JComponent> items;
public MyPrintable()
{
items = new ArrayList<>();
}
@Override
public int print(Graphics g, PageFormat pf, int page) throws PrinterException
{
if(page > 0) return Printable.NO_SUCH_PAGE;
Graphics2D g2 = (Graphics2D)g;
g2.translate(pf.getImageableX(), pf.getImageableY());
for(JComponent item : items)
{
item.setLayout(null);
// item.setBounds(500, 500, 200, 200);
item.printAll(g);
g2.translate(0, item.getHeight());
}
return Printable.PAGE_EXISTS;
}
public void printIt()
{
PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();;
PrinterJob job = PrinterJob.getPrinterJob();
try
{
job.setPrintable(this);
if(job.printDialog(attributes))
job.print(attributes);
}
catch (PrinterException e)
{
JOptionPane.showMessageDialog(null, e);
}
}
public void addComponent(JComponent component) { items.add(component); }
}
benzeyecek? –
@SergiyMedvynskyy Soruyu düzenledim. – Redone
Kodunuzu görmeden size nasıl yardımcı olabilirim? Lütfen bir [SSCCE] (http://sscce.org) sağlayın, yani ben (veya başka biri) size yardımcı olmaya çalışıyorum. –