我在处理 Java 2D 图形时遇到问题。
我有一个 JPanel
,我可以在上面绘制一些图像,还可以使用 Timer 将图像移动到圆圈中。
*最初我在paint()
方法中绘制界面。单击按钮后,我从文件中读取数据,然后调用一个函数在定时控制函数中显示这些图像和字符串。
* 问题是,我的绘图屏幕显示重叠图像,如果我调用 repaint()
,屏幕开始闪烁。
我需要帮助将基本绘图作为图像添加到背景面板中,然后在运行时绘图到另一个重叠但透明的面板上,因此如果我调用 repaint()
屏幕表现正常并且不会发生闪烁。我附上了场景的屏幕截图。
有人可以建议如何添加两个面板,一个用于背景,另一个用于运行时绘制到背景图像面板吗?
最佳答案
我希望有swing.JPanel而不是awt.Panel,然后用paintComponent代替paint
有四种方式
在 paintComponent() 中添加任何 drawString 或 subImage/Image,将这些对象准备为局部变量,在 paintComponent() 中仅使用这些变量的值或在准备好的对象数组中循环
将带有文本的图标/ImageIcons 的 JLabel(透明,默认情况下不透明)添加到 JLabel,需要将 JLabel 的网格添加到 JPanel,并在运行时将 setIcon/setText 设置为所需的 JLabel
将 JLabels 放到 GlassPane 中,剩下的看第 2 点
将 JLabels 放到 JLayer 中,剩下的看第 2 点
关于另一个面板上的 Java 透明面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16941802/