Есть два решения, о которых я могу подумать:
Вызовите метод paint
вашего компонента с помощью Graphics
из BufferedImage
.Итак,
BufferedImage bi = new BufferedImage(width,height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = bi.createGraphics();
yourComponent.setSize(width,height);
yourComponent.paint(g2);
g2.dispose();
Проанализируйте содержимое bi
.
Вариант 2, вы можете заставить свой компонент отображать то, что он нарисовал.Когда ваши прямоугольники нарисованы, запишите, что вы делаете.Затем сделайте это доступным из объекта.Это может быть более полезно, если вам нужны конкретные размеры.
private StringBuilder sb = new StringBuilder();
public String getOperations() {
return sb.toString();
}
@Override
protected void paintComponent(Graphics g) {
sb.setSize(0);
g.setColor(Color.RED);
sb.append("Color(red),");
int y = //some come;
int height = //some code
//for loop
g.clearRect(1, y, getWidth(), height);
sb.append("Clear(").append(getWidth()),append(",")
.append(height).append("),");
g.drawRect(1, y, getWidth(), height);
sb.append("drawRect(").append(1),append(","),append(y).append(",")
.append(getWidth()),append(","),append(height).append("),");
g.dispose();
super.paintComponent(g);
}