【发布时间】:2020-06-15 18:37:58
【问题描述】:
我在我的 Mac 上运行了一段代码,它能够按照我的意愿运行,但是当我在我的 Windows PC 上运行同样的代码时,程序的输出完全不同。这是一个 java swing 窗口,可以让你在屏幕上移动一个点。在 Mac 上它可以正常工作,但在我的 Windows PC 上,这个点会留下一串残像。基本上每次重新绘制面板时,图形都不会被清除。我应该怎么做才能解决这个问题?我已经尝试在我的 PC 上卸载并重新安装 java,但它并没有改变程序的输出。如果您需要查看图形代码,请查看:GraphicsPanel 类中的https://github.com/Nathaniel-github/NetworkingTrialClient。
这是我的绘画组件:
public void paintComponent(Graphics g) {
g.setColor(Color.WHITE);
if (notConnectedToServer()) {
g.drawString("Connecting to server...", 680, 400);
} else if (serverConnection) {
try {
int numberOfPlayers = dataIn.readInt();
fileWriter.write("Data received(Number of Players): " + numberOfPlayers);
for (int i = 0; i < numberOfPlayers; i ++) {
int x = dataIn.readInt();
fileWriter.write("Data received(X coordinate), Iteration " + i + ": " + x);
int y = dataIn.readInt();
fileWriter.write("Data received(Y coordinate), Iteration " + i + ": " + y);
g.fillOval(x - 5, y - 5, 10, 10);
}
} catch (IOException e) {
e.printStackTrace();
}
} else {
g.fillOval(player.getX() - 5, player.getY() - 5, 10, 10);
}
}
【问题讨论】:
-
您应该在问题中包含minimal reproducible example,但这里有一个建议:将
super.paintComponent(g);放在覆盖的paintComponent方法的顶部。这将覆盖之前的任何内容。 -
哦,非常感谢你修复了它
-
酷。到时候我会把它作为答案发布。