Невозможно нарисовать графику из-за аннотации @Override - PullRequest
0 голосов
/ 20 декабря 2018

Я экспериментировал с рисованием на JFrame, так что я мог бы использовать эти эксперименты в будущем для программы, которую я мог бы создать.Однако я обнаружил проблему, которую не могу решить: как рисовать вещи с установленным таймером.

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

}

Как видите, я пытаюсь рисовать новый квадрат каждую секунду,Проблема в том, что я получаю ошибку в коде:

метод не переопределяет или не реализует метод из супертипа

Как я могу это исправить?

1 Ответ

0 голосов
/ 20 декабря 2018

Как это исправить?

Метод run() не принимает параметр.Избавьтесь от параметра Graphics.Это избавит от ошибки компиляции.

Однако, это все равно не поможет с вашей картиной.

Вместо этого вам нужно переопределить paintComponent(...) метод JPanel, после чего вы добавите панель к рамке.Затем вы используете объект Graphics, переданный методу paintComponent (), для рисования.

Прочтите раздел из учебника Swing по Custom Painting для получения дополнительной информации и рабочих примеров, с которых можно начать..

Также вы НЕ должны использовать TimerTask для анимации.Вы должны использовать Swing Timer .Затем в методе actionPerformed(...) ActionListener вы измените свойства своей пользовательской картины (т.е. в вашем случае добавите новый квадратный объект для рисования), а затем вызовете repaint() на панели.

, я пытаюсь рисовать новый квадрат каждую секунду

Посмотрите на пример DrawOnImage, найденный в Пользовательские подходы к рисованию .Он покажет вам, как добавить объект Rectangle в BufferedImage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...