我有一个JPanel,我将一些图像设置为背景。我需要在图像上绘制一堆圆圈。现在圆圈将基于某个坐标x,y定位,并且尺寸将基于某个整数大小。这就是我的班级。
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;
class ImagePanel extends JPanel {
private Image img;
CircleList cList; //added this
public ImagePanel(Image img) {
this.img = img;
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setSize(size);
setLayout(null);
cList = new CircleList(); //added this
}
public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, null);
cList.draw(null); //added this
}
}
如何创建一些可以执行此操作的方法?
答案 0 :(得分:2)
您的方法可能与此类似,您可以使用类CircleList
来保存所有圆圈和绘图例程:
class CircleList
{
static class Circle
{
public float x, y, diameter;
}
ArrayList<Circle> circles;
public CirclesList()
{
circles = new ArrayList<Circle>();
}
public void draw(Graphics2D g) // draw must be called by paintComponent of the panel
{
for (Circle c : circles)
g.fillOval(c.x, c.y, c.diameter, c.diameter)
}
}
答案 1 :(得分:1)
最简单的方法是将这些内容放在paintComponent
方法中。
int x = ...;
int y = ...;
int radius = ...;
g.drawOval(x, y, radius, radius);
答案 2 :(得分:1)
好吧,您可能希望创建一个ArrayList来存储有关要绘制的圆的信息。然后,当调用paintComponent()方法时,只需遍历ArrayList并绘制圆圈。
Custom Painting Approaches显示了如何对矩形进行此操作。您可以修改椭圆的代码,也可以添加方法来使用位置信息更新数组,而不是动态地执行。
答案 3 :(得分:1)
你看过JXLayer
了吗?它是一个非常棒的库,允许您以明显的方式在任何GUI元素上层叠特殊绘画。我相信它将包含在JDK7的主要java库中