java add image to canvas -


i'm trying add image java canvas. i'm using "imageio.read" image source. problem i'm facing don't know how display on canvas after reading image location. later need load different image(e.g. after button pressed) how can this. update (canvas.update) method needs "graphics" parameter instead of image. below you'll find code simplified (i left out code that's not relevant canvas issue.)

public class mainwindow {      public static void main(string[] args) {         eventqueue.invokelater(new runnable() {             public void run() {                 try {                     window = new mainwindow();                     window.frame.setvisible(true);                 } catch (exception e) {                     e.printstacktrace();                 }             }         });     }      /**      * create application.      */     public mainwindow() {         initialize();     }      /**      * initialize contents of frame.      */     private void initialize() {         canvas csstatusimage = new canvas();         csstatusimage.setbounds(393, 36, 200, 200);         frame.getcontentpane().add(csstatusimage);          image img;         try {             img = imageio.read(new file("images/error_status_1.png"));             csstatusimage.imageupdate(img, 10, 2, 2, 9, 10);             csstatusimage.checkimage(img, (imageobserver) this);             csstatusimage.createimage((imageproducer) img);          } catch (ioexception e1) {             e1.printstacktrace();         }     } } 

first of all, going need way paint image. achieve this, can override paint method of java.awt.canvas class

import java.awt.canvas; import java.awt.dimension; import java.awt.frame; import java.awt.graphics; import java.awt.event.windowadapter; import java.awt.event.windowevent; import java.awt.image.bufferedimage; import java.io.file; import java.io.ioexception; import javax.imageio.imageio; import javax.swing.jframe;  public class test {      public static void main(string[] args) {         new test();     }      public test() {         frame frame = new frame("testing");         frame.addwindowlistener(new windowadapter() {             @override             public void windowclosing(windowevent e) {                 system.exit(0);             }         });         frame.add(new imagecanvas());         frame.pack();         frame.setlocationrelativeto(null);         frame.setvisible(true);     }      public class imagecanvas extends canvas {          private bufferedimage img;          public imagecanvas() {             try {                 img = imageio.read(new file("images/error_status_1.png"));             } catch (ioexception ex) {                 ex.printstacktrace();             }         }          @override         public dimension getpreferredsize() {             return img == null ? new dimension(200, 200) : new dimension(img.getwidth(), img.getheight());         }          @override         public void paint(graphics g) {             super.paint(g);             if (img != null) {                 int x = (getwidth() - img.getwidth()) / 2;                 int y = (getheight() - img.getheight()) / 2;                 g.drawimage(img, x, y, this);             }         }      }  } 

i have tell you, awt out-of-date 15+ years, replaced swing. may find hard additional support api. if can, you'd better of using swing or javafx


Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

[C++][SFML 2.2] Strange Performance Issues - Moving Mouse Lowers CPU Usage -

ios - Possible to get UIButton sizeThatFits to work? -