私は自分のプロジェクト作業のためにJavaでデスクトップアプリケーションを開発しています。小計フィールドと合計フィールドを含む請求書をJTable
の表形式のデータとともに印刷する必要があります。テーブルは印刷できますが、同じページには印刷できません。すなわち、第1ページのJTableプリントと、次ページの小計、合計プリントとを含む。両方のデータを同じページに印刷する方法はありますか?私は報告エンジンを使いたくない。 inbuilt Java印刷サービスを使用してください。私を案内してください。私が好きなJavaでJTableとその他のテキストフィールドを印刷する
印刷形式:
次の図は、GUI
を示していると次の図は、私が今まで取得していますレポートを示しています。正しい形式ではありません。あなたがきた座標にすべて自分のものを印刷したい場合は
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();
を次のように
コードがあり、以下に私の印刷可能なクラスが
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); }
}
のように見えるのだろうか? –
@SergiyMedvynskyy私は質問を編集しました。 – Redone
コードを見ずに、どうすれば手助けできますか? [SSCCE](http://sscce.org)を入力してください。私(または他の誰か)があなたを助けようとすることができます。 –