Я пишу приложение сопоставления в Java, используя Swing для пользовательского интерфейса (я включил образец прототипа в конце этого сообщения). Карта реализована с использованием настраиваемого класса MapPanel, который расширяет JPanel. Карта извлекается с сервера как серия изображений 300x300 (плитки), которые нарисованы на MapPanel всякий раз, когда вызывается метод paintMap(). Из-за длины и сложности (несколько классов и т.д.) кода я не могу включить все это здесь, но метод paintMap() в основном работает следующим образом:Многослойные панели в Swing с пользовательской покраской
// Loop for each map tile (image, xPos, yPos)
getGraphics().drawImage(image, xPos, yPos, 300, 300, null);
Я хотел бы иметь еще JPanel (содержащий JSlider для управления масштабированием), наложенные поверх панели карты, но у меня возникают трудности с тем, чтобы это работало. Всякий раз, когда я рисую карту, наложенная JPanel исчезает. Если я перекрашу наложенную JPanel в методе paintMap(), она плохо мерцает, когда карта перетаскивается (и, таким образом, перекрашивается непрерывно).
Любые предложения относительно того, как я мог реализовать свой интерфейс без мерцания?
Перемещение моего вызова drawImage() к методу paintComponent, похоже, устранило мою проблему - спасибо! – Jonathan