J'exécutais un morceau de code sur mon mac et il pouvait fonctionner comme je le voulais, mais lorsque j'exécutais exactement la même chose sur mon PC Windows, la sortie du programme était totalement différente. C'était une fenêtre pivotante Java qui vous permettrait de déplacer un point autour de l'écran. Sur le mac, cela fonctionnait parfaitement bien, mais sur mon PC Windows, le point laisse une traînée d'images rémanentes. Fondamentalement, chaque fois que le panneau est repeint, les graphiques ne sont pas effacés. Que dois-je faire pour résoudre ce problème ? J'ai déjà essayé de désinstaller et de réinstaller Java sur mon PC mais cela n'a pas changé la sortie du programme. Si vous avez besoin de jeter un oeil au code graphique c'est ici : https://github.com/Nathaniel -github/NetworkingTrialClient dans la classe GraphicsPanel.

Voici mon composant de peinture :

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);

            }

        }
-2
Hibiflobu 15 juin 2020 à 21:37

1 réponse

Meilleure réponse

Lorsque vous remplacez paintComponent, vous souhaitez généralement commencer par appeler la méthode remplacée paintComponent, qui remplira l'espace, en peignant sur tout ce qui était là depuis la dernière peinture.

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

    // Draw your stuff
}
3
khelwood 15 juin 2020 à 19:18