@Abaddon88

PaintComponent отказывается работать, cannot resolve symbol «g» как исправить?

Доброго вечера. Столкнулся с одной неприятной проблемой. Сидел смотрел запись одного вэбинара на тему создания приложения "Сапер" на языке Джава. Когда речь дошла о графике, написал код как и было указано в видео, но Idea не воспринимает оный. Вроде бы, все библиотеки у меня подключены. Облазил уже все, что только мог, переустанавливал 16 версию JDK и все бесполезно. Помогите как можно скорее, это важно.
private void initPanel ()
    {
        panel = new JPanel();
        {
            @Override
            protected void paintComponent(Graphics g)
            {
                super.paintComponents(g);
                for (Box box : Box.values())
                    g.drawImage ((Image)box.image, box.ordinal() * IMAGE_SIZE, 0, this);
            }
        };
        panel.setPreferredSize (new Dimension(COLS * IMAGE_SIZE, ROWS * IMAGE_SIZE));
        add (panel);
    }

Выше предоставлен фрагмент кода где именно вылезает ошибка. Далее приведу код всего класса для общего понимания того, что вообще происходит:
import javax.swing.*;
import java.awt.*;
import Sweeper.Box;

public class JavaSweeper extends JFrame
{
    private JPanel panel;
    private final int COLS = 15;
    private final int ROWS = 1;
    private final int IMAGE_SIZE = 50;

    public static void main (String [] args)
    {
        new JavaSweeper(); //Создание экземпляра программы
    }

    private JavaSweeper ()
    {
        setImages();
        initPanel();
        initFrame(); //Вызов инициализации фрейма
    }

    private void initPanel ()
    {
        panel = new JPanel();
        {
            @Override
            protected void paintComponent(Graphics g)
            {
                super.paintComponents(g);
                for (Box box : Box.values())
                    g.drawImage ((Image)box.image, box.ordinal() * IMAGE_SIZE, 0, this);
            }
        };
        panel.setPreferredSize (new Dimension(COLS * IMAGE_SIZE, ROWS * IMAGE_SIZE));
        add (panel);
    }

    //Подготовка заготовок
    private void initFrame ()
    {
        pack ();
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setTitle("Java Sweeper");
        setLocationRelativeTo(null);
        setResizable(false);
        setVisible(true);


    }

    private void setImages ()
    {
       for (Box box : Box.values())
           box.image = getImage(box.name());
    }

    private Image getImage (String name)
    {
        String filename = "img/" + name.toLowerCase() + ".png";
        ImageIcon icon = new ImageIcon(getClass().getResource(filename));
        return icon.getImage();
    }

}

60994e5c97a1a442885788.png
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
xez
@xez Куратор тега Java
TL Junior Roo
panel = new JPanel(); -- Вот тут лишняя точка-запятая
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы