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
Post a Comment