-
Bug
-
Resolution: Unresolved
-
P3
-
7u21
-
linux_ubuntu
FULL PRODUCT VERSION :
On Ubuntu:
java version " 1.7.0_21 "
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)
On Fedora:
java version " 1.7.0_09-icedtea "
OpenJDK Runtime Environment (fedora-2.3.3.fc18.1-i386)
OpenJDK Server VM (build 23.2-b09, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
-Linux rubu 3.8.0-23-generic #34-Ubuntu SMP Wed May 29 20:22:58 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
-Fedora 18 32-bit Gnome Live CD
EXTRA RELEVANT SYSTEM CONFIGURATION :
Tested on external display:
-LG Flatron L1530S (using VGA port)
-Toshiba Power TV (using HDMI port)
A DESCRIPTION OF THE PROBLEM :
When displaying a transparent JFrame on external display on linux, the background of the JFrame should be transparent. However, this is not the case, the background is black. If displayed on main display, the program runs correctly. Also it runs correctly on Windows even though displayed on external display.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Just run the program on a dual-display (monitor) linux system.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The JFrame displayed with transparent background on external display.
ACTUAL -
The JFrame displayed with black background on external display.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
(no error message).
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.awt.Color;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import javax.swing.JOptionPane;
public class ExtDisplayConsole {
public static void main(String[] args) {
TransparentFrame frm = new TransparentFrame();
frm.setVisible(true);
}
}
class TransparentFrame extends javax.swing.JFrame {
public TransparentFrame() {
// For transparent.
this.setUndecorated(true);
this.setBackground(new Color(0, 0, 0, 0));
this.setAlwaysOnTop(true);
initComponents();
}
@SuppressWarnings( " unchecked " )
// <editor-fold defaultstate= " collapsed " desc= " Generated Code " >
private void initComponents() {
lbl1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});
getContentPane().setLayout(null);
lbl1.setFont(new java.awt.Font( " Ubuntu " , 0, 24)); // NOI18N
lbl1.setForeground(java.awt.Color.orange);
lbl1.setText( " TEST LABEL, TEST LABEL, TEST LABEL " );
getContentPane().add(lbl1);
lbl1.setBounds(0, 0, 479, 125);
pack();
}// </editor-fold>
private void formWindowOpened(java.awt.event.WindowEvent evt) {
try {
Rectangle[] screen = p_getScreenBound();
if (screen.length == 1) {
throw new Exception( " Error: Please plug in an external display. " );
}
this.setBounds(screen[1].x+50, screen[1].y+50, lbl1.getWidth(), lbl1.getHeight());
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex.toString());
}
}
private Rectangle[] p_getScreenBound() {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] agd = ge.getScreenDevices();
Rectangle[] arectScreen = new Rectangle[agd.length];
for (int i = 0; i < agd.length; i++) {
GraphicsDevice gd = agd[i];
GraphicsConfiguration gc = gd.getDefaultConfiguration();
arectScreen[i] = gc.getBounds();
}
return arectScreen;
}
private javax.swing.JLabel lbl1;
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
(no workaround).
On Ubuntu:
java version " 1.7.0_21 "
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)
On Fedora:
java version " 1.7.0_09-icedtea "
OpenJDK Runtime Environment (fedora-2.3.3.fc18.1-i386)
OpenJDK Server VM (build 23.2-b09, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
-Linux rubu 3.8.0-23-generic #34-Ubuntu SMP Wed May 29 20:22:58 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
-Fedora 18 32-bit Gnome Live CD
EXTRA RELEVANT SYSTEM CONFIGURATION :
Tested on external display:
-LG Flatron L1530S (using VGA port)
-Toshiba Power TV (using HDMI port)
A DESCRIPTION OF THE PROBLEM :
When displaying a transparent JFrame on external display on linux, the background of the JFrame should be transparent. However, this is not the case, the background is black. If displayed on main display, the program runs correctly. Also it runs correctly on Windows even though displayed on external display.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Just run the program on a dual-display (monitor) linux system.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The JFrame displayed with transparent background on external display.
ACTUAL -
The JFrame displayed with black background on external display.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
(no error message).
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.awt.Color;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import javax.swing.JOptionPane;
public class ExtDisplayConsole {
public static void main(String[] args) {
TransparentFrame frm = new TransparentFrame();
frm.setVisible(true);
}
}
class TransparentFrame extends javax.swing.JFrame {
public TransparentFrame() {
// For transparent.
this.setUndecorated(true);
this.setBackground(new Color(0, 0, 0, 0));
this.setAlwaysOnTop(true);
initComponents();
}
@SuppressWarnings( " unchecked " )
// <editor-fold defaultstate= " collapsed " desc= " Generated Code " >
private void initComponents() {
lbl1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});
getContentPane().setLayout(null);
lbl1.setFont(new java.awt.Font( " Ubuntu " , 0, 24)); // NOI18N
lbl1.setForeground(java.awt.Color.orange);
lbl1.setText( " TEST LABEL, TEST LABEL, TEST LABEL " );
getContentPane().add(lbl1);
lbl1.setBounds(0, 0, 479, 125);
pack();
}// </editor-fold>
private void formWindowOpened(java.awt.event.WindowEvent evt) {
try {
Rectangle[] screen = p_getScreenBound();
if (screen.length == 1) {
throw new Exception( " Error: Please plug in an external display. " );
}
this.setBounds(screen[1].x+50, screen[1].y+50, lbl1.getWidth(), lbl1.getHeight());
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex.toString());
}
}
private Rectangle[] p_getScreenBound() {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] agd = ge.getScreenDevices();
Rectangle[] arectScreen = new Rectangle[agd.length];
for (int i = 0; i < agd.length; i++) {
GraphicsDevice gd = agd[i];
GraphicsConfiguration gc = gd.getDefaultConfiguration();
arectScreen[i] = gc.getBounds();
}
return arectScreen;
}
private javax.swing.JLabel lbl1;
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
(no workaround).