Обычное приложение Windows реализует контекстные меню как настоящие окна, поэтому, когда пользователь закрывает их, все окна, расположенные внизу, должным образом получают уведомления и перерисовываются, поэтому изображение меню нигде не «остается позади».
Java-приложения, с которыми у вас возникают проблемы, скорее всего, реализуют контекстные меню, рисуя их прямо на экране, а когда меню закрываются, приложение сворачивается и делает недействительными все окна под ним. Я предполагаю, что этот метод не делает недействительной область, занятую вашим приложением, потому что он думает, что ваше окно находится над ним, и он не понимает, что ваше приложение прозрачно (это предположение - я не знаю точно. контекстные меню для этих приложений выглядят иначе, чем меню для нативного приложения, тогда, вероятно, именно это и происходит).
Если это то, что происходит, вы мало что можете с этим поделать. Одна вещь, которую вы могли бы сделать, это нарисовать на экране самостоятельно, вместо использования прозрачного окна. Или вы могли бы просто иметь таймер в вашей форме периодически вызывать обновление / аннулировать.