java动态生成收据
final JFrame frame = new JFrame("Bill");
frame.getContentPane().setBackground(Color.WHITE);
JLabel jlabel = new JLabel("");
jlabel.setFont(new Font("Serif", Font.PLAIN, 12));
frame.add(jlabel);
frame.validate();
frame.repaint();
jlabel = new JLabel("-----------BILL-----------");
jlabel.setFont(new Font("Serif", Font.PLAIN, 20));
frame.add(jlabel);
frame.validate();
frame.repaint();
jlabel = new JLabel("");
jlabel.setFont(new Font("Serif", Font.PLAIN, 12));
frame.add(jlabel);
frame.validate();
frame.repaint();
frame.setLayout(new GridLayout(0, 3));
try {
String sql = "SELECT * FROM order_detail";
rs = st.executeQuery(sql);
frame.add(new JLabel("Item"));
frame.validate();
frame.repaint();
frame.add(new JLabel("Quantity"));
frame.validate();
frame.repaint();
frame.add(new JLabel("Amount"));
frame.validate();
frame.repaint();
while (rs.next()) {
String printLbl = rs.getString("Item");
frame.add(new JLabel(printLbl));
frame.validate();
frame.repaint();
printLbl =""+rs.getInt("Quantity");
frame.add(new JLabel(printLbl));
frame.validate();
frame.repaint();
printLbl = ""+rs.getInt("Cost");
frame.add(new JLabel(printLbl));
frame.validate();
frame.repaint();
}
frame.add(new JLabel(""));
frame.validate();
frame.repaint();
frame.add(new JLabel("Total"));
frame.validate();
frame.repaint();
frame.add(new JLabel(jLabel82.getText()));
frame.validate();
frame.repaint();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(700, 400);
frame.setVisible(true);
PrinterJob job = PrinterJob.getPrinterJob();
job.setJobName("frame");
job.setPrintable(new Printable() {
public int print(Graphics pg, PageFormat pf, int pageNum) {
if (pageNum > 0) {
return Printable.NO_SUCH_PAGE;
}
Graphics2D g2 = (Graphics2D) pg;
g2.translate(pf.getImageableX(), pf.getImageableY());
frame.paint(g2);
return Printable.PAGE_EXISTS;
}
});
boolean ok = job.printDialog();
if (ok) {
try {
job.print();
} catch (PrinterException ex) {
}
我想创建一个票据收据,在该收据中,从将生成的票据数据库中提取项目。我已经使用了上面的代码,但我面临的问题是它的格式。我怎样才能把它放在正确的票据收据格式中
# 1 楼答案
虽然您的代码可以进行大量清理,但通常使用JComponents会有点麻烦,尤其是当它仅用于打印时。创建HTML文本,并将其放入标签中。那么你就有了更多的方式来设计事物。
首先,良好的格式是可能的。使用MessageFormat可以使用不同的区域设置,但至少有一个接收到正确的千个分隔符等等
可以从数据库中生成HTML字符串:
可以对整个表行使用MessageFormat,而不是追加链接
# 2 楼答案
请尝试此代码,它可能会帮助您