我正在为学校作业制作蛇,并在尝试使背景清晰时遇到问题。它在我改变背景颜色之前起作用了。但是,现在它将不再删除任何已经绘制然后被掩盖的内容。
例如:当分数改变时,数字将显示在彼此的顶部,并且蛇的先前位置将不会被擦除,并且他似乎仍然在那里。我有一个想法,这将涉及我使用当前的桌面背景。
第1课:
private void draw(Graphics g) {
if (inGame) {
g.drawImage(apple, appleCoordinateX, appleCoordinateY, this); //Draws apple
for (int i = 0; i < dotNum; i++) { //Runs loop to draw each piece of the snake
if (i == 0) {
g.drawImage(head, coordinateX[i], coordinateY[i], this); //Draws the head in a different colour to body
} else {
g.drawImage(body, coordinateX[i], coordinateY[i], this); //Draws body
}
}
if ((Integer.toString(score*dotNum).length()) >= 3) {
size = 23;
fromEdge = 4;
} else if ((Integer.toString(score*dotNum).length()) >= 4) {
size = 15;
fromEdge = 3;
}
Font font = new Font("Comic Sans", Font.BOLD, size);
g.setColor(Color.RED);
g.setFont(font);
g.drawString(Integer.toString(score*dotNum), fromEdge, 30); //Draws scorekeeper
Toolkit.getDefaultToolkit().sync();
(已编辑)第2课:
{{1}}
答案 0 :(得分:1)
我认为您需要为JFrame的内容窗格设置背景颜色,而不是JFrame。
myJFrame.getContentPane().setBackground( desiredColor );
对于面板和&amp;标签,您必须将项目设置为不透明
jpanel.setOpaque(true);