Jo allemaal,
nu ik al enige tijd bezig ben met het verbeteren van een IDE, ben ik ook bezig met het fixen van een print probleem. Deze is opgelost en er is een mooie oplossing gevonden. Mijn probleem is echter: op de eerste pagina wil ik wat model info displayen (lukt prima), maar op de pagina's met de pagina index != 0 wil ik gewoon een paginanummer laten zien (zie code). Dit lukt echter niet, alleen op pagina 1 wordt er extra informatie afgedrukt, wie kan er zien wat er mis is?
Wie kan mij helpen?
nu ik al enige tijd bezig ben met het verbeteren van een IDE, ben ik ook bezig met het fixen van een print probleem. Deze is opgelost en er is een mooie oplossing gevonden. Mijn probleem is echter: op de eerste pagina wil ik wat model info displayen (lukt prima), maar op de pagina's met de pagina index != 0 wil ik gewoon een paginanummer laten zien (zie code). Dit lukt echter niet, alleen op pagina 1 wordt er extra informatie afgedrukt, wie kan er zien wat er mis is?
Java:
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
| /** @see java.awt.print.Printable#print(java.awt.Graphics,java.awt.print.PageFormat,int) */ public int print(Graphics pg, PageFormat pageFormat, int pageIndex) throws PrinterException { if (pageIndex >= m_maxNumPage) return NO_SUCH_PAGE; int wPage = (int) pageFormat.getImageableWidth(); int hPage = (int) pageFormat.getImageableHeight(); int w = Math.round((float) (painter.getUnscaledSize().width * printScale)); int h = Math.round((float) (painter.getUnscaledSize().height * printScale)); if (w == 0 || h == 0){ return NO_SUCH_PAGE; } int nCol = Math.max((int) Math.ceil((double) w / wPage), 1); int nRow = Math.max((int) Math.ceil((double) h / hPage), 1); m_maxNumPage = nCol * nRow; int iCol = pageIndex % nCol; int iRow = pageIndex / nCol; int x = iCol * wPage; int y = iRow * hPage; int wImage = Math.min(wPage, w - x); int hImage = Math.min(hPage, h - y); MiceStatusBar.println("%" + (int)((pageIndex/(double)m_maxNumPage)*100)); pg.translate((int) pageFormat.getImageableX(), (int) pageFormat.getImageableY()); pg.setClip(0, 0, wImage, hImage); editor.selectNone(); /* Draw the STD on the page with -x and -y offset. */ Graphics2D gbi = (Graphics2D) pg; AffineTransform at = gbi.getTransform(); gbi.scale(printScale, printScale); gbi.translate(-x / printScale, -y / printScale); gbi.setColor(Color.BLACK); Object[] objectList = editor.getObjectList(); for (int i = 0; i < objectList.length; i++) { if (objectList[i] instanceof State) { State st = (State) objectList[i]; painter.drawState(st, gbi,Color.BLACK,StdEditorDefaults.STATE_FONT,Color.BLACK); } else if (objectList[i] instanceof Transition) { Transition tr = (Transition) objectList[i]; painter.drawTransition(tr, gbi,Color.BLACK,StdEditorDefaults.TRANSITION_FONT,Color.BLACK); } else if (objectList[i] instanceof UnboundText) { UnboundText ub = (UnboundText) objectList[i]; painter.drawUnboundText(ub, gbi,Color.BLACK,StdEditorDefaults.UNBOUND_TEXT_FONT); } } //Caption on the top of each page gbi.setTransform(at); gbi.translate(-x/printScale,-y/printScale); Font f = new Font("Verdana", Font.PLAIN, 6); //Textstart settings for the page Point Textstart1 = new Point((int)((x+10)),(int)((y+10))); Point Textstart2 = new Point((int)((x+10)),(int)((y+20))); Point Textstart3 = new Point((int)((x+10)),(int)((y+30))); gbi.setColor(Color.WHITE); Date d = new Date(); SimpleDateFormat formatter; formatter = new SimpleDateFormat("MM/dd/yy"); String s = formatter.format(d); String text1 = editor.getReference().getTitle() + " - " + editor.getReference().getName(); String text2 = s; String text3 = "Page: " + (pageIndex+1) + "/" + m_maxNumPage; gbi.setColor(Color.BLACK); Point Textend; if(pageIndex == 0){ //draw a rectangle Textend = StdPainter.drawText(text1,Textstart1,f,gbi); gbi.setColor(Color.WHITE); gbi.fillRect(Textstart1.x-2,Textstart1.y,Textend.x-Textstart1.x+4,32); gbi.setColor(Color.GRAY); gbi.drawRect(Textstart1.x-2,Textstart1.y,Textend.x-Textstart1.x+4,32); StdPainter.drawText(text1,Textstart1,f,gbi); StdPainter.drawText(text2,Textstart2,f,gbi); StdPainter.drawText(text3,Textstart3,f,gbi); } if(pageIndex != 0){ Textend = StdPainter.drawText(text3,Textstart1,f,gbi); gbi.setColor(Color.WHITE); gbi.fillRect(Textstart1.x-2,Textstart1.y,Textend.x-Textstart1.x+4,10); gbi.setColor(Color.GRAY); gbi.drawRect(Textstart1.x-2,Textstart1.y,Textend.x-Textstart1.x+4,10); StdPainter.drawText(text3,Textstart1,f,gbi); } //clean objects objectList = null; gbi.dispose(); System.gc(); return PAGE_EXISTS; } |
Wie kan mij helpen?