Sorry, the attachment on that last one had a few references to other projects that I
had been
testing . Here's a clean version of the ame class (it still gets the same exception).
Thanks
again.
-Dave
"David A. Green" wrote:
> First, let me express my gratitude and congratulations to the blackdown
> porting team. Great job!
>
> Second, I have run into a bug/issue regarding the createImage(int, int)
> function in java.awt.component. I call this function to create an
> off-screen image to be used for double-buffering. I get the following
> exception:
>
> Exception occurred during event dispatching:
> java.lang.IllegalArgumentException: Raster IntegerInterleavedRaster:
> width = 300 height = 200 #Bands = 3 #DataElements 1 xOff = 0 yOff = 0
> dataOffset[0] 0 is incompatible with ColorModel DirectColorModel:
> rmask=ff0000 gmask=ff00 bmask=ff amask=0
> at sun.awt.motif.MComponentPeer.createImage(Compiled Code)
> at java.awt.Component.createImage(Compiled Code)
> at ImageTest.update(Compiled Code)
> at sun.awt.motif.MComponentPeer.handleEvent(Compiled Code)
> at java.awt.Component.dispatchEventImpl(Compiled Code)
> at java.awt.Container.dispatchEventImpl(Compiled Code)
> at java.awt.Component.dispatchEvent(Compiled Code)
> at java.awt.EventQueue.dispatchEvent(Compiled Code)
> at java.awt.EventDispatchThread.run(Compiled Code)
>
> I also get the following exception whenever I try to use a swing
> component. This particular one was from the SampleTree demo app
> included in the jdk1.2:
>
> Error loading L&F: java.lang.IllegalArgumentException: Raster
> IntegerInterleavedRaster: width = 64 height = 64 #Bands = 3
> #DataElements 1 xOff = 0 yOff = 0 dataOffset[0] 0 is incompatible with
> ColorModel DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
> Exception in thread "main" java.lang.NullPointerException
> at java.util.Hashtable.get(Compiled Code)
> at javax.swing.UIDefaults.get(Compiled Code)
> at javax.swing.MultiUIDefaults.get(Compiled Code)
> at javax.swing.UIDefaults.getUIClass(Compiled Code)
> at javax.swing.UIDefaults.getUI(Compiled Code)
> at javax.swing.UIManager.getUI(Compiled Code)
> at javax.swing.JMenuBar.updateUI(Compiled Code)
> at javax.swing.JMenuBar.<init>(Compiled Code)
> at SampleTree.constructMenuBar(Compiled Code)
> at SampleTree.<init>(Compiled Code)
> at SampleTree.main(Compiled Code)
>
> All of the code that generates these exceptions works just fine using
> java 1.1 or java 1.2 on both the Win32 and Solaris versions of the jdk.
> I am running Debian 2.0, with some libraries upgraded to 2.1 (slink).
> My only thought is that I am running in 32bpp mode in X windows and that
> may be causing problems with the offscreen images being incompatible
> with the DirectColorModel used to decode the pixels (which assumes 24bpp
> color and 8b of alpha). Also, despite the exceptions, the image still
> loads. This, however, is not true for the swing exception, which kills
> whichever thread is creating the swing component. I have tried in 24bpp
> mode, but I just get a jvm crash whenever it loads the image. I have
> attached my test program which creates a simple double-buffered panel
> with an image painted on it. Does anyone have any thoughts? Is this a
> bug in the java classes or in the jvm? Should I report it to sun?
> Thanks.
>
> -Dave Green
>
> ------------------------------------------------------------------------
> import java.awt.*;
> import java.awt.event.*;
> import pong.common.ImageServer;
> import honors.frame.ImagePanel;
>
> public class ImageTest extends Panel {
>
> private Image myImage = null;
> private Image buffer = null;
> private Graphics pad = null;
> private boolean buffered = true;
>
> public ImageTest(String filename) {
> try {
> int n = Integer.parseInt(filename);
> myImage = ImageServer.getImage(n);
> } catch (Exception x) {
> myImage = Toolkit.getDefaultToolkit().getImage(filename);
> }
> }
>
> public void update(Graphics g) {
> if (buffered) {
> if (buffer == null) {
> buffer = this.createImage(this.getSize().width,
>this.getSize().height);
> pad = buffer.getGraphics();
> }
> paint(pad);
> g.drawImage(buffer, 0, 0, this);
> } else {
> paint(g);
> }
> }
>
> public void paint(Graphics g) {
> g.setColor(Color.gray);
> g.fillRect(0, 0, 300, 200);
> g.drawImage(myImage, 0, 0, this);
> }
>
> public Dimension getPreferredSize() {
> return new Dimension(300, 200);
> }
>
> public static void main(String[] args) {
> if (args.length < 1) {
> System.out.println("please provide a file name");
> return;
> }
> Frame f = new Frame("ImageTest");
> f.add(new ImageTest(args[0]));
> f.addWindowListener( new WindowAdapter() {
> public void windowClosing (WindowEvent w) { System.exit(0); } });
> f.pack();
> f.setVisible(true);
> f.repaint();
> }
>
> }
import java.awt.*;
import java.awt.event.*;
public class ImageTest extends Panel {
private Image myImage = null;
private Image buffer = null;
private Graphics pad = null;
private boolean buffered = true;
public ImageTest(String filename) {
myImage = Toolkit.getDefaultToolkit().getImage(filename);
}
public void update(Graphics g) {
if (buffered) {
if (buffer == null) {
buffer = this.createImage(this.getSize().width, this.getSize().height);
pad = buffer.getGraphics();
}
paint(pad);
g.drawImage(buffer, 0, 0, this);
} else {
paint(g);
}
}
public void paint(Graphics g) {
g.setColor(Color.gray);
g.fillRect(0, 0, 300, 200);
g.drawImage(myImage, 0, 0, this);
}
public Dimension getPreferredSize() {
return new Dimension(300, 200);
}
public static void main(String[] args) {
if (args.length < 1) {
System.out.println("please provide a file name");
return;
}
Frame f = new Frame("ImageTest");
f.add(new ImageTest(args[0]));
f.addWindowListener( new WindowAdapter() {
public void windowClosing (WindowEvent w) { System.exit(0); } });
f.pack();
f.setVisible(true);
f.repaint();
}
}