gpt4 book ai didi

java - Swing 中带有自定义绘画的分层面板

转载 作者:行者123 更新时间:2023-11-29 06:01:47 24 4
gpt4 key购买 nike

我正在用 Java 编写 map 应用程序,使用 Swing 作为 UI(我在本文末尾附上了原型(prototype)图)。该 map 是使用扩展 JPanel 的自定义 MapPanel 类实现的。 map 作为一系列 300x300 图像(瓦片)从服务器获取,只要调用其 paintMap() 方法,这些图像就会绘制在 MapPanel 上。由于代码的长度和复杂性(多个类等),我无法在此处包含所有代码,但 paintMap() 方法基本上是这样工作的:

// Loop for each map tile (image, xPos, yPos)
getGraphics().drawImage(image, xPos, yPos, 300, 300, null);

我想让另一个 JPanel(包含一个用于缩放控制的 JSlider)覆盖在 map 面板的顶部,但我很难让它工作。每当我绘制 map 时,覆盖的 JPanel 都会消失。如果我在 paintMap() 方法中重新绘制覆盖的 JPanel,当拖动 map 时它会严重闪烁(因此会不断重新绘制)。

关于如何在不闪烁的情况下实现我的 UI 有什么建议吗?

UI prototype

最佳答案

getGraphics().drawImage(image, xPos, yPos, 300, 300, null); // WRONG!!
  1. 不要调用 getGraphics() - 而是覆盖 JPanelJComponentpaintComponent(Graphics) > 并根据要求进行绘画。
  2. 使用this作为ImageObserver

关于java - Swing 中带有自定义绘画的分层面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9856093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com