United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6683775 Painting artifacts is seen when panel is made setOpaque(false) for a translucent window
JDK-6683775 : Painting artifacts is seen when panel is made setOpaque(false) for a translucent window

Details
Type:
Bug
Submit Date:
2008-04-03
Status:
Closed
Updated Date:
2011-01-19
Project Name:
JDK
Resolved Date:
2009-05-18
Component:
client-libs
OS:
windows_xp
Sub-Component:
javax.swing
CPU:
x86
Priority:
P2
Resolution:
Fixed
Affected Versions:
6u10
Fixed Versions:
6u14 (b02)

Related Reports
Backport:
Relates:
Relates:
Relates:

Sub Tasks

Description
I have a frame , which is having a jpanel in the north & jpanel is having a button . In the center of the frame i have added a Jscrollpane which holds a textarea. I called panel.setOpaque(false) & set the frame to become translucent by calling  com.sun.awt.AWTUtilities.setWindowOpaque(frame, false); , when i call this method i can see two  button . I have attached screen shot of the same. When i comment the  com.sun.awt.AWTUtilities.setWindowOpaque(frame, false); line , Every thing works as expected. 

Step to reproduce:-
----------------------
1) Run the attached testcase.
2) If you see two button to the north of the frame , then the bug is reproduced.
Or see screen shot. If the gui & screen is seen then the bug is reproduce.


I run this program on 6u10 b14 .

                                    

Comments
SUGGESTED FIX

The panel containing the components should be:
1. non-opaque: JPanel.setOpaque(false);
2. non-double-buffered: JPanel.setDoubleBuffered(false);
In this case everything works fine.
                                     
2008-04-04
EVALUATION

This is because making the components non-opaque (using setOpaque(false)) is not sufficient. The panel should had been made non-double-buffered as well (using the setDoubleBuffered(false)).

Currently the Swing team is fixing this issue. Please refer to the CR 6668436 for more details. As soon as this CR is fixed the problem should disappear. Thus I'm closing this CR as a duplicate of the 6668436.
                                     
2008-04-04
EVALUATION

This bug is reopened, we need to fix it the way that painting double-buffered components to an off-screen image not corrupt Swing double-buffer
                                     
2008-12-30
EVALUATION

The idea of the fix is to paint through RepaintManager  
only if the paint() method is called by the Swing painting system
(by RepaintManager itself or paintImmediately())
                                     
2008-12-30



Hardware and Software, Engineered to Work Together