Я пытаюсь создать простое меню для небольшого проекта, используя JSpinner и JOptionPane. Я создал желаемый результат, но когда я взаимодействую с окном или даже навожу курсор на кнопки в поле, он снова и снова создает визуальные артефакты (см. изображения ниже):
JOptionPane перед наведением мыши
JOptionPane после наведения мыши
Я провел некоторое исследование и подумал, что это может быть связано с тем, что JOptionPane не является потокобезопасным, но ничего не смог заставить работать.
В целом, мой конкретный вопрос заключается в том, как предотвратить перерисовку Java этих визуальных артефактов в моем окне JOptionPane?
Для справки см. метод, который я использую для отображения этого меню:
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.SpinnerNumberModel;
import javax.swing.JSpinner;
public class Battleship
{
public static void main(String[] args)
{
SpinnerNumberModel battleshipRange = new SpinnerNumberModel(1, 1, 5, 1);
JSpinner rangeSpinner = new JSpinner(battleshipRange);
JOptionPane.showMessageDialog(null, rangeSpinner, "Battleship Number", JOptionPane.QUESTION_MESSAGE);
}
}
Я запускаю этот код на BlueJ и использую Windows 10 Pro.
Заранее спасибо и извините, если это вопрос новичка. Я все еще довольно новичок в программировании.
РЕДАКТИРОВАТЬ: Обновлен код, чтобы указать полный источник проблемы, но он исчез. Я буду следить за этим, чтобы увидеть, где впервые появился источник ошибки.