Ne peut pas dessiner des graphiques Because Of Annotation « @Override »

Quijibo:

J'ai expérimenté avec dessin sur un JFrame, pour que je puisse utiliser ces expériences dans l'avenir pour un programme que je pourrais créer. Cependant, je l'ai trouvé un problème que je ne suis pas en mesure de résoudre: Comment dessiner des choses tout en ayant une minuterie mis en place.

public static void MyTimer() {
JFrame frame = new JFrame("Colors");

    int width = 700;
    int height = 700;

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setBackground(Color.BLACK);
    frame.pack();
    frame.setSize(width, height);
    frame.setVisible(true);
    frame.setResizable(false);
    TimerTask task;
task = new TimerTask() {
    int a = 2;

    @Override
    public void run(Graphics g) {
        g.drawRect(a, 2, a + 66, 68);
    g.fillRect(a, 2, a + 66, 68);

        a = a + 20;
    }
};
     timer.schedule(task, 0, 1000);

}

Comme vous pouvez le voir, je suis en train de dessiner une nouvelle place chaque seconde. Le problème est, je reçois une erreur dans le code:

procédé ne remplace pas ou mettre en oeuvre un procédé à partir d'un supertype

Comment puis-je réparer cela?

camickr:

Comment puis-je réparer cela?

La run()méthode ne prend pas un paramètre. Débarrassez -vous du paramètre Graphics. Cela se débarrasser de l'erreur de compilation.

Toutefois, cela toujours pas l'aide avec votre peinture.

Au lieu de cela , vous devez remplacer la paintComponent(...)méthode de JPanelvous ajoutez le panneau au cadre. Ensuite , vous utilisez l'objet Graphics est passé à la méthode paintComponent () pour faire votre peinture.

Lisez la section du tutoriel Swing sur mesure Peinture pour plus d' informations et des exemples de travail pour commencer.

Aussi , vous ne devriez pas utiliser un TimerTask pour l' animation. Vous devez utiliser une minuterie Swing . Puis , dans la actionPerformed(...)méthode de ActionListenervous changeriez les propriétés de votre peinture personnalisée (dans votre cas ajouter un nouvel objet carré à peindre) puis invoquez repaint()sur le panneau.

, Je suis en train de dessiner un nouveau chaque seconde carré

Consultez l' DrawOnImageexemple trouvé dans peinture personnalisée approches . Il vous montrera comment ajouter un objet à un rectangle BufferedImage.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=119783&siteId=1
conseillé
Classement