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

时间:2013-06-05 13:52:12

标签: java swing jpanel

我正在使用Java 2D图形并遇到问题。

我有JPanel我可以在其上绘制一些图像,并使用计时器将图像移动到圆圈中。

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

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

有人可以建议如何添加两个面板,以便一个服务于背景,其他工作如运行时绘制到背景图像面板上吗?

1 个答案:

答案 0 :(得分:3)

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

有四种方式

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

  2. 使用带有文本的Icons / ImageIcons向JLabel添加JLabel(透明,non_opaque除非),将JLabel的网格添加到JPanel,并在运行时将setIcon / setText添加到所需的JLabel

  3. 将JLabel放入GlassPane,休息时间见第2点

  4. 将JLabel放到JLayer,休息时间见第2点