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(); } }