【问题标题】:Why is the same program running differently on Windows than Mac为什么同一个程序在 Windows 和 Mac 上的运行方式不同
【发布时间】: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 方法的顶部。这将覆盖之前的任何内容。
  • 哦,非常感谢你修复了它
  • 酷。到时候我会把它作为答案发布。

标签: java swing graphics


【解决方案1】:

当您覆盖 paintComponent 时,通常您希望首先调用被覆盖的 paintComponent 方法,该方法将填充空间,在最后一次绘制的任何内容上进行绘制。

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);

    // Draw your stuff
}

【讨论】:

    猜你喜欢
    • 2015-07-18
    • 2017-09-02
    • 2015-06-15
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    相关资源
    最近更新 更多