Salut,
J’espère que je suis dans le bon forum.
Je voudrai imprimer un ticket pour un point de ventre (ex : magasin) en java.
J’ai développé la classe suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package src;
 
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
 
import src.pos.article.ArticleList;
import src.pos.order.Order;
 
public class PrintTicket implements Printable{
	private Ticket ticket;
	private int x;
	private int y;
 
	public PrintTicket() {
		init();
	}
 
	public PrintTicket(Ticket ticket) {
		init();
		this.ticket = ticket;
	}
 
	private void init(){
		x=5;
		y=10;
	}
 
	  public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
		  Order order=ticket.getOrder();
		  ArticleList articleList=ticket.getArticlesList();
          if (page > 0) { /* We have only one page, and 'page' is zero-based */
            return NO_SUCH_PAGE;
          }
          Graphics2D g2d = (Graphics2D)g;
          g2d.translate(pf.getImageableX(), pf.getImageableY());          
          g.drawString("BIENVENU", x, y);
          //y+=10;
          g.drawString("**************************************", x, (y+=10));
          //System.out.println("order.getOrderID() : "+order.getOrderID());
          g.drawString(order.getSDateNow(), x, (y+=10));
          g.drawString(order.getSHeureNow(), x, (y+=10));
          g.drawString("Commande N° : "+order.getOrderID(), x, (y+=10));
          g.drawString("**************************************", x, (y+=10));
 
          for(int i=0;i<articleList.getSize();i++){
            g.drawString(articleList.getArticle(i).getName(), x, (y+=10));
            x+=20;
            g.drawString(String.valueOf(articleList.getArticle(i).getPu()), x, (y+=10));
            x+=20;
            g.drawString(String.valueOf(articleList.getArticle(i).getQuantity()), x, (y+=10));
            x+=20;
            g.drawString(String.valueOf(articleList.getArticle(i).getPrice()), x, (y+=10));
          }
 
          /* tell the caller that this page is part of the printed document */
          return PAGE_EXISTS;
      }
 
	  public void printTicket(){
		  PrinterJob job = PrinterJob.getPrinterJob();
		  //PrinterJob job = new PrinterJob();
	      job.setPrintable(this);
	      //boolean ok = job.printDialog();
	      //if (ok) {
	          try {
	              job.print();
	          } catch (PrinterException ex) {
	             /* The job did not successfully complete */
	         }
	      //}
	  }
 
	public Ticket getTicket() {
		return ticket;
	}
 
	public void setTicket(Ticket ticket) {
		this.ticket = ticket;
	}
}
Le problème réside dans la boucle for :
J’ai une liste « ArticleListe » composé de plusieurs articles et je veux imprimer le nom de chaque article, sa quantité, son prix unitaire et le prix total avec les méthodes respectives :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
articleList.getArticle(i).getName(),
articleList.getArticle(i).getPu(),
articleList.getArticle(i).getQuantity(),
articleList.getArticle(i).getPrice()
Quand je décale l’axe des ordonnées (l’axe x) dans la boucle for, tous ce qui devra être imprimé se décale même ceux situé avant la boucle for
Merci de me dire comment résoudre se problème