Я немного запутался в модели рисования Swing.
Предположим, у меня есть комп JComponent, и я делаю что-то вроде:
c.setBackground(Color.RED);
c.setBackground(Color.YELLOW);
Очевидно, что конечным результатом является желтый цвет.
Как Swing справляется с этим?
Первый вызов вызывает немедленную перерисовку, поэтому перед желтым будет короткое мерцание красного цвета? Является ли эта последовательность значительно медленнее, чем просто краска желтого цвета?
Если бы я выполнял это вне потока событий Swing, я бы предположил, что в большинстве случаев (хотя условие гонки возможно), к тому времени, когда Swing EDT посещает свойство, уже имеет желтый цвет, поэтому никогда не краснеть.
Однако, насколько я понимаю, я должен делать эти вызовы из Runnable в Swing EDT. Это верно? В таком случае может показаться, что EDT должен был бы полностью выполнить каждое изменение без каких-либо «заглядываний»?