Ik heb een klein probleempje in een overriden paint methode van een JPanel...
We moeten voor een schoolopdracht een spelletje RushHour programmeren.
Alles werkt perfect, op 1 ding na, als hij de string tekent voor de score, dan blijft die op 0 staan, terwijl in het achterliggende level object de score wel toeneemt.
Iemand enig idee wat ik verkeerd doe? Ik vermoed dat hij niet mooi zijn tekengebied leegmaakt op voorhand, maar zou niet weten hoe ik het anders moet doen
We moeten voor een schoolopdracht een spelletje RushHour programmeren.
Alles werkt perfect, op 1 ding na, als hij de string tekent voor de score, dan blijft die op 0 staan, terwijl in het achterliggende level object de score wel toeneemt.
Java: LevelView.java
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
| @Override public void paint(Graphics g) { // kleur instellen en tekenveld leegmaken g.setColor(Color.gray); g.clearRect(0, 0, viewSize.width, viewSize.height); // afbeelding tekenen g.drawImage(speelveld, 0, 0, null); // tekstkleur en font instellen g.setColor(Color.BLACK); g.setFont(levelNameFont); // metingen voor strings te tekenen FontMetrics fm = g.getFontMetrics(); Rectangle2D stringSize = fm.getStringBounds(level.getNaam(), g); // teken levelnaam linksboven g.drawString(level.getNaam(), 20, 30); // andere font instellen g.setFont(stappenFont); // metingen voor string met aantal stappen stringSize = fm.getStringBounds("Aantal stappen: "+level.getAantalStappen(), g); // HIER GAAT HET FOUT - teken string met aantal stappen (score) g.drawString("Aantal stappen: "+level.getAantalStappen(), viewSize.width / 2 - (int) stringSize.getWidth(), viewSize.height - 50); // teken alle voertuigen if (voertuigLijst != null) { for (VoertuigView voertuigView : voertuigLijst) { Rectangle bnds = voertuigView.getBounds(); bnds.x = transformeerPunt(voertuigView.getPositie()).x; bnds.y = transformeerPunt(voertuigView.getPositie()).y; voertuigView.setBounds(bnds); voertuigView.repaint(); } // debug informatie System.out.println(level.toString()); } } |
Iemand enig idee wat ik verkeerd doe? Ik vermoed dat hij niet mooi zijn tekengebied leegmaakt op voorhand, maar zou niet weten hoe ik het anders moet doen