Java Изображение курсора мыши не отображается, ошибка перерисовки - PullRequest
0 голосов
/ 12 января 2020

Я создаю два курсора для моей видеоигры:

        // blank cursor image
        BufferedImage cursorImg = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);

        blankCursor = toolkit.createCustomCursor(
                cursorImg, new Point(0, 0), "blank cursor");

        customCursor = toolkit.createCustomCursor(
            MY_IMAGE, new Point(0,0) , "custom cursor");

Я устанавливаю курсор мыши пустым при запуске игры:

this.setCursor(blankCursor);

Затем позже, при определенных условиях Я хочу снова показать свой курсор:

this.setCursor(customCursor);

Пустой курсор работает. Пользовательский курсор не отображается никогда. (обратите внимание, что я знаю, что линия работает, потому что я использую System.out.println. Я также знаю, что значок курсора работает, потому что, если я переключаю два из них, тогда отображается customCursor, а пустой курсор - нет)

Таким образом, вопрос заключается в следующем: какие перерисовки / обновления / повторной проверки мне нужно сделать, чтобы показать мой второй значок курсора?

Также я почти уверен, что для курсоров не существует метода setVisible(), но если есть другое лучшее решение, которое также приветствуется.

1 Ответ

1 голос
/ 12 января 2020

Не уверен, что перекраска или проверка помогут в вашем случае: курсор, вероятно, отрисован системой и имеет определенные ограничения. В вашем случае изображение, вероятно, недопустимо и сделано прозрачным, что делает createCustomCursor :

Создает новый объект пользовательского курсора. Если отображаемое изображение недопустимо, курсор будет скрыт (сделан полностью прозрачным) , а точка доступа будет установлена ​​на (0, 0).

...