Java program refresh and repaint problems on Windows7 64bit using Multiple Displays
Posted on 2010-11-16
Since switching to Windows7 64 Bit OS our Java program does not always refresh correctly on the second monitor of our two monitor workstations. Periodically, some of the dialogs of our program either come up completely black, or come up correct but then don’t redraw correctly after showing the desktop. By not showing correctly I mean that the dialog seems to start to redraw and seems to get interrupted leaving other parts of the same dialog drawn on unrelated parts of the dialog. The most dependable way to get this to happen is to show the desktop, and then restore one of the dialogs on the second monitor, Aero Peek another dialog (either on the first or second monitor, doesn’t matter), and then select that other dialog to restore it. This usually causes the redraw problem with the dialog that was restored first on the second monitor. This never happened in XP, but we always used “Span Desktop” across the two monitors. Now in Windows7 the only choice we have is to “Extend” the desktop onto the second monitor. I was told by one of our developers that he saw many of the same problems on XP when trying to Extend rather than Span the desktop. Our program is compiled with JDK1.6_20 (64bit). I’m trying to find out if I can do anything programmatically or with configuration to correct the issue when “Extending” the desktop onto a second monitor unless there is a way to get Span Desktop back in Windows7.
Additional Information: I found that if I mark the right most monitor as the “Main Display” that the redraw problem seemed to go away for almost all of our workstations. Since making that change I have only seen the redraw problem on one workstation that has an upgraded video card from the one that came with the workstation. I did notice that by making the right most display the “Main Display” that any dialog on the left monitor now shows an X value location of negative, zero being the left edge of the right most monitor. I don’t know if this has anything to do with the problem, however when the left most display was the “Main Display” the X value location of the right most monitor was very high (above the range of the resolution of the left most monitor). This may have been causing some problems for Windows, the video card driver, or Java. I don’t know. The problem is still not solved. I might have a workaround for most workstations, but I would still like to find out a solution for all workstations.