Почему при выполнении этого кода каждый раз, когда я изменяю размер окна, оно запускается снова и переделывает мою карту?
Ваш код для создания карты находится в paintComponent() метод.Этот метод вызывается каждый раз, когда Swing определяет, что компонент должен быть перекрашен.Изменение размера рамки является одним из случаев, когда компоненты должны быть перекрашены.
По этой причине ваш метод paintComponent () должен быть максимально эффективным.Вы не должны делать ввод / вывод в этом методе.
Ваш текущий код не имеет большого смысла для меня.У вас есть два цикла с использованием переменных i, j, но вы строите списки ArrayLists, используя жестко закодированные значения.Единственный раз, когда вы используете переменную i, j, это метод drawImage ().
Итак, я думаю, код для создания карты должен быть выполнен во внешнем методе, а затем в методе paintComponent ().должен вызывать drawImage (..) только внутри ваших циклов.
Кроме того, поскольку метод drawImage () использует метод random (), каждый раз, когда вызывается метод paintComponent (), вы будете изменять изображение.Это, вероятно, не то, что вы хотите, поэтому в действительности вам, вероятно, нужно создать весь BufferedImage извне.Затем изображение можно добавить в JLabel и добавить метку к рамке, чтобы вам не требовалось настраивать рисование на панели.