如何在JPanel中添加多个图层

时间:2012-06-26 11:26:43

标签: java swing paintcomponent

我需要一些Java Swing组件及其功能方面的帮助。我需要向JPanel添加JFrame并在其上绘制Ellipse2D。在Ellipse2D上我想添加另一个元素,在我的例子中它是一张图片(现在我使用ImageIcon,也许是错误的)。如何在面板中添加Ellipse2D和图片,如附图所示?

我需要分离图像的原因是,因为我有时需要更改椭圆的填充颜色。

感谢您的帮助。enter image description here

3 个答案:

答案 0 :(得分:6)

您需要的是创建自定义JPanel实施并覆盖paintComponent方法。

在其中,你只需:

public void paintComponent(Graphics g) {

    super.paintComponent(g);

    // Draw ellipse here

    // Draw your image here. It will be drawn on top of the ellipse.

}

这样,您可以在CustomPanel类中保留椭圆填充颜色,并在更改颜色后调用repaint()方法。

答案 1 :(得分:2)

  • 在Oracles教程中How to Decorate Components with the JLayer Class

  • 可以很好地描述您的想法(包括代码示例)
  • 通知JLayer仅适用于Java7,但它基于(适用于Java6)JXLayer

  • 您也可以使用(我正在使用)GlassPane,使用相同的/ similair输出到Swing GUI

修改

使用OverlayLayout输出非常简单明了,可以使用J/Component覆盖Graphics(s),例如a few examples

答案 2 :(得分:0)

将这两个图像作为图像图标,如

ImageIcon car=new ImageIcon("image path");
ImageIcon elipse=new ImageIcon("image path");

添加两个图标图标两个标签

JLabel carLabel=new JLabel(car);
JLabel ellipseLabel=new JLabel(ellipse);

并设置椭圆和汽车的位置

carLabel.setBounds(0,0,50,50);
ellipseLabel.setBounds(10,10,50,50);