import java.awt.*; import java.awt.image.*; public class textCanvas extends java.awt.Canvas { public textCanvas() { //{{INIT_CONTROLS setSize(144,72); //}} } //{{DECLARE_CONTROLS //}} public static void main(String argv[]) { class DriverFrame extends java.awt.Frame { public DriverFrame() { addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent event) { dispose(); // free the system resources System.exit(0); // close the application } }); setLayout(null); setSize(400,300); add(new textCanvas()); } } new DriverFrame().show(); } private Image offScreenImage; private Graphics pen; final public void paint(Graphics graphics) { //Without this if statement a multitude of image buffers will be created for double buffering! if(offScreenImage == null) { offScreenImage = createImage(getSize().width, getSize().height); pen = offScreenImage.getGraphics(); } //Clear the offScreenImage. pen.setColor(this.getBackground()); pen.fillRect( 0, 0, getSize().width, getSize().height); //Draw pen.setFont(this.getFont()); pen.setColor(Color.black); if(myText != null) { pen.drawString(myText,(int)(getSize().width*0.1),(int)(getSize().height*.9)); } graphics.drawImage(offScreenImage, 0, 0, this); } final public void update(Graphics graphics) { paint(graphics); } public String myText; public void setText(String text) { this.myText = text; this.repaint(); } public String getText() { return myText; } public int[] myPixels() { int[] pixels = new int[getSize().width * getSize().height]; PixelGrabber pg = new PixelGrabber(offScreenImage, 0, 0, getSize().width, getSize().height, pixels, 0, getSize().width); try { pg.grabPixels(); } catch (InterruptedException e) { System.err.println("interrupted waiting for pixels!"); return pixels; } if ((pg.getStatus() & ImageObserver.ABORT) != 0) { System.err.println("image fetch aborted or errored"); return pixels; } return pixels; } }