我需要一些有关 Java Swing 组件及其功能的帮助。我需要将 a 添加JPanel
到 aJFrame
并在其上绘制 an Ellipse2D
。在Ellipse2D
我想添加另一个元素的上面,在我的情况下它是一张图片(现在我使用一个ImageIcon
,可能是错误的)。Ellipse2D
如我所附图片所示,如何在面板上添加和图片?
我需要分离图像的原因是,因为我有时需要更改椭圆的填充颜色。
谢谢你的帮助。
我需要一些有关 Java Swing 组件及其功能的帮助。我需要将 a 添加JPanel
到 aJFrame
并在其上绘制 an Ellipse2D
。在Ellipse2D
我想添加另一个元素的上面,在我的情况下它是一张图片(现在我使用一个ImageIcon
,可能是错误的)。Ellipse2D
如我所附图片所示,如何在面板上添加和图片?
我需要分离图像的原因是,因为我有时需要更改椭圆的填充颜色。
谢谢你的帮助。
您需要的是创建自定义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()
您的想法可能会在 Oracles 教程How to Decorate Components with the JLayer Class中得到很好的描述(包括代码示例)
通知JLayer
仅适用于 Java7,但它基于 (for Java6) JXLayer
您也可以使用(我正在使用)GlassPane
,与 Swing GUI 的相同/类似输出
编辑
使用OverlayLayoutJ/Component
非常简单和漂亮的输出,可以使用Graphics
例如几个示例进行覆盖
将这两个图像作为图像图标
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);