can't create BufferedImage
I am trying to create a BifferedImage and Graphics2D associated with a
JPanel. I understand that the JPanel must be displayable else the
createImage method may return null. However in my stub program below I
always get null returned from createGraphics. I obviously am missing
something but I can't figure out what. If the program below is run
without a runline parameter it does not attempt to create a
BufferedImage and it runs OK. If it is run with a runline parameter it
throws an exception because bh is null. Why?
Jay
public class Test extends javax.swing.JFrame {
private static String[] opt = null;
public Test() {
init();
}
void init() {
javax.swing.JPanel jContentPane = new javax.swing.JPanel();
setContentPane(jContentPane);
setSize(450, 350);
javax.swing.JPanel graphPanel = new javax.swing.JPanel();
java.awt.Dimension s = new java.awt.Dimension(400, 300);
graphPanel.setPreferredSize(s);
getContentPane().add(graphPanel, null);
graphPanel.addNotify();
s = graphPanel.getPreferredSize();
System.err.println("Is JPanel=" +
(graphPanel instanceof javax.swing.JPanel) +
" " + s.width + "x" + s.height + " Displayable=" +
graphPanel.isDisplayable() + " Headless= " +
java.awt.GraphicsEnvironment.isHeadless());
if(opt!=null && opt.length>0) {
java.awt.image.BufferedImage bh =
(java.awt.image.BufferedImage)graphPanel.createImage(
s.width, s.height);
java.awt.Graphics2D bufh = bh.createGraphics();
}
}
public static final void main(String[] argv) {
opt = argv;
Test test = new Test();
test.setVisible(true);
}
}