Java 为什么同一个程序在Windows和Mac上运行的方式不同
我在我的mac电脑上运行一段代码,它可以按照我的要求运行,但当我在我的windows PC上运行同样的程序时,程序的输出完全不同。它是一个java swing窗口,允许您在屏幕上移动一个点。在mac电脑上,它可以很好地工作,但在我的windows电脑上,这个点留下了一系列的后像。基本上,每次重新绘制面板时,图形都不会被清除。我该怎么做才能解决这个问题?我已经尝试在我的电脑上卸载和重新安装java,但它没有改变程序的输出。如果您需要查看图形代码,它就在这里:在GraphicsPanel类中 这是我的绘画组件:Java 为什么同一个程序在Windows和Mac上运行的方式不同,java,swing,graphics,Java,Swing,Graphics,我在我的mac电脑上运行一段代码,它可以按照我的要求运行,但当我在我的windows PC上运行同样的程序时,程序的输出完全不同。它是一个java swing窗口,允许您在屏幕上移动一个点。在mac电脑上,它可以很好地工作,但在我的windows电脑上,这个点留下了一系列的后像。基本上,每次重新绘制面板时,图形都不会被清除。我该怎么做才能解决这个问题?我已经尝试在我的电脑上卸载和重新安装java,但它没有改变程序的输出。如果您需要查看图形代码,它就在这里:在GraphicsPanel类中 这是我
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);
}
}
公共组件(图形g){
g、 setColor(Color.WHITE);
如果(未连接到服务器()){
g、 抽绳(“连接到服务器…”,680400);
}else if(服务器连接){
试一试{
int numberOfPlayers=dataIn.readInt();
fileWriter.write(“收到的数据(玩家数量):”+numberOfPlayers);
for(int i=0;i
当您重写paintComponent
时,通常您希望首先调用重写的paintComponent
方法,该方法将填充空间,并在上一次绘制的所有内容上进行绘制
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// Draw your stuff
}
您应该在问题中包含a,但这里有一个建议:放置
super.paintComponent(g)代码>位于被重写的paintComponent
方法的顶部。这将覆盖以前的一切。哦,非常感谢你,你,它很酷。那我就把它贴出来作为答复。