另一个面板上的 Java 透明面板

标签 java swing jpanel

我在处理 Java 2D 图形时遇到问题。

我有一个 JPanel,我可以在上面绘制一些图像,还可以使用 Timer 将图像移动到圆圈中。

*最初我在paint() 方法中绘制界面。单击按钮后,我从文件中读取数据,然后调用一个函数在定时控制函数中显示这些图像和字符串。 * 问题是,我的绘图屏幕显示重叠图像,如果我调用 repaint(),屏幕开始闪烁。

我需要帮助将基本绘图作为图像添加到背景面板中,然后在运行时绘图到另一个重叠但透明的面板上,因此如果我调用 repaint() 屏幕表现正常并且不会发生闪烁。我附上了场景的屏幕截图。 Background Runtime drawing

有人可以建议如何添加两个面板,一个用于背景,另一个用于运行时绘制到背景图像面板吗?

最佳答案

我希望有swing.JPanel而不是awt.Panel,然后用paintComponent代替paint

有四种方式

  1. 在 paintComponent() 中添加任何 drawString 或 subImage/Image,将这些对象准备为局部变量,在 paintComponent() 中仅使用这些变量的值或在准备好的对象数组中循环

  2. 将带有文本的图标/ImageIcons 的 JLabel(透明,默认情况下不透明)添加到 JLabel,需要将 JLabel 的网格添加到 JPanel,并在运行时将 setIcon/setText 设置为所需的 JLabel

  3. 将 JLabels 放到 GlassPane 中,剩下的看第 2 点

  4. 将 JLabels 放到 JLayer 中,剩下的看第 2 点

关于另一个面板上的 Java 透明面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16941802/

相关文章:

java - 当子项调整大小时调整 JFrame 大小 : how to keep up?

java swing-转义键事件在外观上导致 classCastException

java - AntClassLoader 无法转换为 URLClassLoader

java - JSON 解析错误。 key 存在但未找到

java - 在 JComboBox 上添加 ListSelectionListener

java - 在 JFrame 中淡入和淡出 Jpanels

java - 重新绘制之前不会清除面板

java - 将 JFrame 大小调整为 JLayeredPane 内的 JPanel

java - 如何通过java实现和使用命令提示符命令并在java中查看结果?

java - SmartGwt ListGrid.setAlwaysShowEditors(true) 问题