Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么同一个程序在Windows和Mac上运行的方式不同_Java_Swing_Graphics - Fatal编程技术网

Java 为什么同一个程序在Windows和Mac上运行的方式不同

Java 为什么同一个程序在Windows和Mac上运行的方式不同,java,swing,graphics,Java,Swing,Graphics,我在我的mac电脑上运行一段代码,它可以按照我的要求运行,但当我在我的windows PC上运行同样的程序时,程序的输出完全不同。它是一个java swing窗口,允许您在屏幕上移动一个点。在mac电脑上,它可以很好地工作,但在我的windows电脑上,这个点留下了一系列的后像。基本上,每次重新绘制面板时,图形都不会被清除。我该怎么做才能解决这个问题?我已经尝试在我的电脑上卸载和重新安装java,但它没有改变程序的输出。如果您需要查看图形代码,它就在这里:在GraphicsPanel类中 这是我

我在我的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
方法的顶部。这将覆盖以前的一切。哦,非常感谢你,你,它很酷。那我就把它贴出来作为答复。