Расширьте JLabel
, чтобы сделать пользовательскую живопись.
Вы бы оставили ArrayList
из Rectangles
, который хотите нарисовать. Когда вы нажимаете кнопку, вы добавляете Rectangle
к ArrayList
. Затем в методе paintComponent(...)
вы перебираете ArrayList
для рисования каждого Rectangle
.
Итак, основные изменения в расширении JLabel
будут:
private ArrayList<Rectangle> rectangles = new ArrayList<Rectangle>();
...
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
for (Rectangle r: rectangles)
{
g.setColor( Color.RED );
g.drawRect(...);
}
}
public void addRectangle(Rectangle r)
{
rectangles.add( r );
}
В качестве рабочего примера этого подхода посмотрите пример DrawOnComponent
, приведенный в Пользовательские подходы к рисованию .
Другим вариантом может быть использование JLayer для рисования прямоугольников на JLabel. Прочитайте раздел из учебника по Swing по Как украсить компонент с помощью класса JLayer для некоторых рабочих примеров.
В любом случае вам нужно сделать заказную покраску. Попробуйте оба подхода, чтобы увидеть, какой вы предпочитаете.