[英]Paint Component Not Drawing Oval
好的,所以我目前正在為一個項目制作蛇梯游戲,並且遇到了一個我從未遇到過的問題。 我有一個叫做Player的類,它將在游戲板上是一個圓圈。
paintComponent方法應該不斷地打印true,但不是
public class Player extends JComponent {
private double playerX;
private double playerY;
private double diameter;
private String playerColor;
HashMap<String, Color> colorMap = new HashMap();
public Player(String playerColor, double playerX, double playerY, double diameter) {
this.playerColor = playerColor;
this.playerX = playerY;
this.playerY = playerY;
this.diameter = diameter;
setSize(getPreferredSize());
setLocation((int) diameter, (int) diameter);
}
@Override
public Dimension getPreferredSize() {
return new Dimension((int) diameter * 2, (int) diameter * 2);
}
@Override
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
super.paintComponent(g2d);
setDoubleBuffered(true);
g2d.drawOval((int) playerX, (int) playerY, (int) diameter * 2, (int) diameter * 2);
System.out.println(true);
}
}
您不應擴展JComponent
來創建新的組件,而應通過重寫paintComponent(..)
來自定義繪制過程。
如果要使用其自定義繪畫方案創建一個新組件,請使用JPanel
並重寫paint(..)
方法。
public class Player extends JPanel {
private static final long serialVersionUID = 1L;
private double playerX;
private double playerY;
private double diameter;
private String playerColor;
HashMap<String, Color> colorMap = new HashMap<>();
public Player(String playerColor, double playerX, double playerY, double diameter) {
this.playerColor = playerColor;
this.playerX = playerY;
this.playerY = playerY;
this.diameter = diameter;
setSize(getPreferredSize());
setLocation((int) diameter, (int) diameter);
}
@Override
public Dimension getPreferredSize() {
return new Dimension((int) diameter * 2, (int) diameter * 2);
}
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
setDoubleBuffered(true);
g2d.drawOval((int) playerX, (int) playerY, (int) diameter * 2, (int) diameter * 2);
System.out.println(true);
}
}
更多信息在這里 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.