Я понимаю, что для рисования на Composite вы можете добавить прослушиватель рисования, но это приводит к рисованию под дочерними элементами. Что, если я хочу нарисовать поверх детей?
Следующий рисунок рисует линию, но subc нарисован поверх нее.
Composite c = new Composite(shell, 0);
c.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLUE));
c.setBounds(100, 100, 800, 600);
c.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
e.gc.drawLine(0, 0, 500, 1000);
}
});
final Composite subc = new Composite(c, 0);
subc.setLayout(null);
subc.setBounds(10, 10, 600, 400);