-
Bug
-
Resolution: Not an Issue
-
P4
-
7u55, 8, 9
-
x86_64
-
linux
FULL PRODUCT VERSION :
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Linux phenom 3.2.0-59-generic #90-Ubuntu SMP Tue Jan 7 22:43:51 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
EXTRA RELEVANT SYSTEM CONFIGURATION :
Product Version: NetBeans IDE 8.0.1 (Build 201408251540)
Updates: Updates available to version NetBeans 8.0.1 Patch 1.1
Java: 1.7.0_55; Java HotSpot(TM) 64-Bit Server VM 24.55-b03
Runtime: Java(TM) SE Runtime Environment 1.7.0_55-b13
System: Linux version 3.2.0-59-generic running on amd64; UTF-8; en_US (nb)
User directory: /home/hartman/.netbeans/8.0.1
Cache directory: /home/hartman/.cache/netbeans/8.0.1
A DESCRIPTION OF THE PROBLEM :
Unable to correctly render simple geometric shapes and lines when the Graphics2D setColor() method receives a subclass of Color as its parameter.
This appears to have been reported in an Apple forum in 2005: http://lists.apple.com/archives/java-dev/2005/Jan/msg00499.html
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
See example code.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Comment and uncomment lines 20 & 21.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
class MyPanel extends JPanel
{
private static final double radius = 80.0;
private void doDrawing(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
MyColor color = new MyColor(Color.BLUE);
// Color color = Color.BLUE;
g2d.setColor(color);
Shape circle = new Ellipse2D.Double(160 - radius, 120 - radius, 2.0 * radius, 2.0 * radius);
g2d.draw(circle);
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
doDrawing(g);
}
}
public class ColorSubclassDemo extends JFrame
{
public static final int width = 320;
public static final int height = 240;
public ColorSubclassDemo()
{
initUI();
}
private void initUI()
{
setTitle("Color Subclass Demo");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(new MyPanel());
setSize(width, height);
setLocationRelativeTo(null);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
ColorSubclassDemo demo = new ColorSubclassDemo();
demo.setVisible(true);
}
});
}
}
class MyColor extends Color
{
private boolean userDefined;
public MyColor(Color color)
{
super(color.getRed(), color.getGreen(), color.getBlue(), color.getTransparency());
userDefined = false;
}
public MyColor(Color color, boolean userDefined)
{
super(color.getRed(), color.getGreen(), color.getBlue(), color.getTransparency());
this.userDefined = userDefined;
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Workaround: do not extend Color.
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Linux phenom 3.2.0-59-generic #90-Ubuntu SMP Tue Jan 7 22:43:51 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
EXTRA RELEVANT SYSTEM CONFIGURATION :
Product Version: NetBeans IDE 8.0.1 (Build 201408251540)
Updates: Updates available to version NetBeans 8.0.1 Patch 1.1
Java: 1.7.0_55; Java HotSpot(TM) 64-Bit Server VM 24.55-b03
Runtime: Java(TM) SE Runtime Environment 1.7.0_55-b13
System: Linux version 3.2.0-59-generic running on amd64; UTF-8; en_US (nb)
User directory: /home/hartman/.netbeans/8.0.1
Cache directory: /home/hartman/.cache/netbeans/8.0.1
A DESCRIPTION OF THE PROBLEM :
Unable to correctly render simple geometric shapes and lines when the Graphics2D setColor() method receives a subclass of Color as its parameter.
This appears to have been reported in an Apple forum in 2005: http://lists.apple.com/archives/java-dev/2005/Jan/msg00499.html
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
See example code.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Comment and uncomment lines 20 & 21.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
class MyPanel extends JPanel
{
private static final double radius = 80.0;
private void doDrawing(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
MyColor color = new MyColor(Color.BLUE);
// Color color = Color.BLUE;
g2d.setColor(color);
Shape circle = new Ellipse2D.Double(160 - radius, 120 - radius, 2.0 * radius, 2.0 * radius);
g2d.draw(circle);
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
doDrawing(g);
}
}
public class ColorSubclassDemo extends JFrame
{
public static final int width = 320;
public static final int height = 240;
public ColorSubclassDemo()
{
initUI();
}
private void initUI()
{
setTitle("Color Subclass Demo");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(new MyPanel());
setSize(width, height);
setLocationRelativeTo(null);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
ColorSubclassDemo demo = new ColorSubclassDemo();
demo.setVisible(true);
}
});
}
}
class MyColor extends Color
{
private boolean userDefined;
public MyColor(Color color)
{
super(color.getRed(), color.getGreen(), color.getBlue(), color.getTransparency());
userDefined = false;
}
public MyColor(Color color, boolean userDefined)
{
super(color.getRed(), color.getGreen(), color.getBlue(), color.getTransparency());
this.userDefined = userDefined;
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Workaround: do not extend Color.