Я программирую свое первое Java-приложение, я хочу создать графический интерфейс, который позволяет рисовать различные планы.Как можно ближе к этому представлению:

Моя реализация основана на SWT.
Для рисования узлов и ребер я использовалaddPaintListener()
метод из класса Canvas.
Но у меня есть следующая проблема, метод paintControl()
вызывается бесконечно много раз, каждый раз перерисовываясь.Я спрашиваю себя, есть ли способ избежать этого или, может быть, лучший способ нарисовать план в Java.
Может кто-нибудь из вас предложит мне лучший способ рисовать диаграмму и ребро в Java
Canvas canvas = new Canvas(composite, SWT.ALL);
canvas.addPaintListener(new PaintListener() {
@Override
public void paintControl(PaintEvent e) {
Rectangle rect=new Rectangle(0, 0, 60, 30);
e.gc.drawRectangle(rect);
}
});