This answer expands upon the solution detailed on the TeamViewer thread regarding 'Some applications does not show content (white window) Windows 10 host'.
See 'Solution' below.
Abstract
I have noticed this issue commonly relates to Java applications when the primary monitor is no-longer attached to the device; such as certain laptops which "disconnect" the built-in screen when the lid is shut or workstations when no screens are attached.
Based upon the behaviour of applications with and without a monitor attached, a surface level understanding of graphics accelerators, and experiences in the forum posts I've referenced below, I believe the cause of the contentless windows is the result of application dependencies upon either the DirectDraw or Direct3D sub-systems - which interface with 3D acceleration hardware - when the accelerators are disabled as a result of the monitor being disconnected.
I think I've also experienced similar problems when attempting to run applications which depend upon 3D acceleration within a Linux environment using the Wine compatibility layer (https://bugs.winehq.org/buglist.cgi?component=directx-d3d&product=Wine&resolution=---)
Perhaps this is a power-saving feature of 3D graphics processors which activates when no screens are detected, or perhaps this is related to the framebuffer being unaware of the supported output resolutions and so disables access to the GPU for the Windows shell, which causes Windows to revert to software-only rendering; or some other reason.
Whatever the cause, my assumption that the dedicated graphics hardware was unavailable for 3D processing when the monitor is disabled, and the common denominator for all software experiencing the problem was Java, I questioned whether the JVM was depending upon D3D for rendering, even though Windows only had software-only rendering available.
Solution
Ref: https://superuser.com/a/496775
Using DXDiag, I checked the status of Display DirectX Features:
DirectDraw Acceleration: Enabled
Direct3D Acceleration: Enabled
AGP Texture Acceleration: Enabled
I manually created these registry values, in addition to creating the Direct3D\Drivers key:
Reg Add HKLM\SOFTWARE\Microsoft\DirectDraw /V EmulationOnly /T REG_DWORD /D %_Mode% /F
Reg Add HKLM\SOFTWARE\Microsoft\Direct3D\Drivers /V SoftwareOnly /T REG_DWORD /D %_Mode% /F
Then, using DXDiag, I checked the new status of Display DirectX Features:
DirectDraw Acceleration: Disabled
Direct3D Acceleration: Disabled
AGP Texture Acceleration: Not Available
The Java program window now rendered content correctly via VNC Viewer, when monitor is detached.
I've not tried the suggestion of using the "ForceDirectDrawEmulation" option within the Compatibility Wizard, referenced in the SuperUser thread.
Research and references
Within each heading below is a record of forums posts considered as part of the research which lead to the solution detailed above.
Each section concludes with either a record of the result of applying the solutions proposed in the referenced threads, or the reason the thread wasn't relevant to my environment; but the solutions may be relevant for others.
Disable hardware acceleration in Windows Display Settings
Ref: https://www.auslogics.com/en/articles/disable-hardware-acceleration-in-windows/
Not tried because Display Settings window crashes
Attempt to prevent GPU (ATI Mobility Radeon HD 4500) from disabling hardware acceleration when monitor disconnects
Ref: https://social.technet.microsoft.com/forums/windows/en-us/8a9b5aa7-fe33-4e6d-b39b-8ac80a21fdc2/disable-monitor-off-detection-how?forum=w7itprogeneral
Disabled ?Display Detection?, to prevent disconnection being detected to avoid disabling of HW acceleration
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000]
"Display_Detection_DEF"=dword:00000001
Create/NULL DMMEnableDDCPolling for ATI cards - Ref: Post by NetMage
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000]
"DMMEnableDDCPolling"=dword:00000000
Didn't have any affect following system restart, though the laptop lid was closed during reboot. Though even if it did work, this likely would not have been a suitable solution.
A much more appropriate solution would be if the 3D hardware acceleration could be forced 'always-on', regardless of monitor detection.
System-wide (Java Control Panel) disabling of D3D acceleration for Java applications
Ref: https://forums.guru3d.com/threads/disable-hardware-acceleration-for-java.296918/#post-4096709
Not tried because Java Control Panel isn't present on my system
System-wide (Envionment variables) disabling of D3D acceleration for Java applications
Ref: https://stackoverflow.com/a/36235217
System Properties for Java 2D: http://docs.oracle.com/javase/8/docs/technotes/guides/2d/flags.html
Setting user Environment Variables:
_JAVA_OPTION=-Dsun.java2d.d3d=false -Dsun.java2d.noddraw=true
J2D_D3D=false
If this had worked, it would have been the ideal solution, since it is a Java specific configuration, as opposed to the solution presented above, which requires a full system change in order to compensate for a Java-specific issue.
However, setting the Environment Variables didn't resolve the contentless Window issue for me.
Perhaps the documentation for JRE 8 is outdated, and an alternate method is available for newer releases. Once I'd realised the solution, I didn't go searching for more recent documentation or an alternate solution.
Disable Direct3D acceleration on Windows 7
Ref: How to disable Direct3D Acceleration on Windows 7?
Guide for directx.cpl - changes 32-bit DirectDraw and Direct3D, but not 64-bit (dxdiag 32/64-bit): https://stackoverflow.com/a/25508331
I'm not running a 32-bit version of Windows 7
Disable DirectDraw and Direct3D acceleration on Windows 8[/10]
Ref: https://superuser.com/questions/495303/how-do-i-disable-directdraw-and-direct3d-acceleration-on-windows-8
Guide for directx.cpl - changes 32-bit DirectDraw and Direct3D, but not 64-bit (dxdiag 32/64-bit): https://superuser.com/a/504510
I'm running a 64-bit version of Windows 10, and the Java applications are also 64-bit, so 32-bit DirectDraw and Direct3D settings aren't relevant for me, though the 32-bit directx.cpl did disable the 32-bit DirectDraw and Direct3D as verified by the 32-bit DXDiag.
The registry keys and procedure for disabling the 64-bit DirectDraw and Direct3D are detailed in the solution section above.