java - Trying to cast an Image to a BufferedImage -
i'm writing java code game , when creating health bars saw exception confused me greatly. code , stack below:
code:
package com.teamanubiz.pixelhero; import java.awt.graphics; import java.awt.image; import javax.imageio.imageio; import javax.swing.imageicon; import java.awt.image.bufferedimage; import java.io.file; import java.io.ioexception; import com.teamanubiz.gameapi.gfx.sprite; public class guirenderlayer { public void renderstatbar(guiposition pos, graphics g, int health, int maxhealth, int mana, int maxmana) { sprite healthbar = null; seek { healthbar = new sprite(imageio.read(new file("res\\gui\\bar.png"))); } grab (ioexception e2) { // todo auto-generated grab block e2.printstacktrace(); } healthbar.crop(0, 0, 128, 32); healthbar.scale(256, 32); sprite manabar = null; seek { manabar = new sprite(imageio.read(new file("res\\gui\\bar.png"))); } grab (ioexception e1) { // todo auto-generated grab block e1.printstacktrace(); } manabar.crop(0, 32, 128, 32); manabar.scale(265, 16); sprite temp = null; seek { temp = new sprite(imageio.read(new file("res\\gui\\bar.png"))); } grab (ioexception e) { // todo auto-generated grab block e.printstacktrace(); } temp.crop(0, 64, 128, 32); temp.scale(256, 32); sprite emptyhealth = new sprite(temp.getcurrent()); temp.scale(256, 16); sprite emptymana = new sprite(temp.getcurrent()); if (pos == guiposition.bottom) { double percent_h = health / maxhealth; double percent_m = mana / maxmana; healthbar.crop(0, 0, (int) ((int) 256 * percent_h), 32); manabar.crop(0, 0, (int) ((int) 256 * percent_m), 16); g.drawimage(emptymana.getcurrent(), 100, 464, null); g.drawimage(emptyhealth.getcurrent(), 100, 432, null); g.drawimage(healthbar.getcurrent(), 100, 432, null); g.drawimage(manabar.getcurrent(), 100, 464, null); } } }
this class referencing custom library containing class sprite
. reason says trying cast toolkitimage
bufferedimage
in below method of sprite.java.
public void crop(int xoffset, int yoffset, int width, int height) { bufferedimage temp = (bufferedimage) source; temp = temp.getsubimage(xoffset, yoffset, width, height); source = temp; }
the variable source
instance of image
field in sprite.java
the stack below claims creating toolkitimage
despite fact new imageicon("res\\gui\\bar.png").getimage()
returns image
. not convert image
toolkitimage
ever in code. makes extremely confusing.
stacktrace:
exception in thread "awt-eventqueue-0" java.lang.classcastexception: sun.awt.image.toolkitimage cannot cast java.awt.image.bufferedimage @ com.teamanubiz.gameapi.gfx.sprite.crop(sprite.java:48) @ com.teamanubiz.pixelhero.guirenderlayer.renderstatbar(guirenderlayer.java:55) @ com.teamanubiz.pixelhero.gamewindow.tick(gamewindow.java:14) @ com.teamanubiz.gameapi.display.paint(display.java:95) @ javax.swing.repaintmanager$4.run(unknown source) @ javax.swing.repaintmanager$4.run(unknown source) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$1.dointersectionprivilege(unknown source) @ javax.swing.repaintmanager.paintdirtyregions(unknown source) @ javax.swing.repaintmanager.paintdirtyregions(unknown source) @ javax.swing.repaintmanager.prepaintdirtyregions(unknown source) @ javax.swing.repaintmanager.access$1300(unknown source) @ javax.swing.repaintmanager$processingrunnable.run(unknown source) @ java.awt.event.invocationevent.dispatch(unknown source) @ java.awt.eventqueue.dispatcheventimpl(unknown source) @ java.awt.eventqueue.access$400(unknown source) @ java.awt.eventqueue$3.run(unknown source) @ java.awt.eventqueue$3.run(unknown source) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$1.dointersectionprivilege(unknown source) @ java.awt.eventqueue.dispatchevent(unknown source) @ java.awt.eventdispatchthread.pumponeeventforfilters(unknown source) @ java.awt.eventdispatchthread.pumpeventsforfilter(unknown source) @ java.awt.eventdispatchthread.pumpeventsforhierarchy(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.run(unknown source) exception in thread "awt-eventqueue-0" java.lang.classcastexception: sun.awt.image.toolkitimage cannot cast java.awt.image.bufferedimage @ com.teamanubiz.gameapi.gfx.sprite.crop(sprite.java:48) @ com.teamanubiz.pixelhero.guirenderlayer.renderstatbar(guirenderlayer.java:55) @ com.teamanubiz.pixelhero.gamewindow.tick(gamewindow.java:14) @ com.teamanubiz.gameapi.display.paint(display.java:95) @ javax.swing.repaintmanager$4.run(unknown source) @ javax.swing.repaintmanager$4.run(unknown source) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$1.dointersectionprivilege(unknown source) @ javax.swing.repaintmanager.paintdirtyregions(unknown source) @ javax.swing.repaintmanager.paintdirtyregions(unknown source) @ javax.swing.repaintmanager.prepaintdirtyregions(unknown source) @ javax.swing.repaintmanager.access$1300(unknown source) @ javax.swing.repaintmanager$processingrunnable.run(unknown source) @ java.awt.event.invocationevent.dispatch(unknown source) @ java.awt.eventqueue.dispatcheventimpl(unknown source) @ java.awt.eventqueue.access$400(unknown source) @ java.awt.eventqueue$3.run(unknown source) @ java.awt.eventqueue$3.run(unknown source) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$1.dointersectionprivilege(unknown source) @ java.awt.eventqueue.dispatchevent(unknown source) @ java.awt.eventdispatchthread.pumponeeventforfilters(unknown source) @ java.awt.eventdispatchthread.pumpeventsforfilter(unknown source) @ java.awt.eventdispatchthread.pumpeventsforhierarchy(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.run(unknown source) exception in thread "awt-eventqueue-0" java.lang.classcastexception: sun.awt.image.toolkitimage cannot cast java.awt.image.bufferedimage @ com.teamanubiz.gameapi.gfx.sprite.crop(sprite.java:48) @ com.teamanubiz.pixelhero.guirenderlayer.renderstatbar(guirenderlayer.java:55) @ com.teamanubiz.pixelhero.gamewindow.tick(gamewindow.java:14) @ com.teamanubiz.gameapi.display.paint(display.java:95) @ javax.swing.repaintmanager$4.run(unknown source) @ javax.swing.repaintmanager$4.run(unknown source) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$1.dointersectionprivilege(unknown source) @ javax.swing.repaintmanager.paintdirtyregions(unknown source) @ javax.swing.repaintmanager.paintdirtyregions(unknown source) @ javax.swing.repaintmanager.prepaintdirtyregions(unknown source) @ javax.swing.repaintmanager.access$1300(unknown source) @ javax.swing.repaintmanager$processingrunnable.run(unknown source) @ java.awt.event.invocationevent.dispatch(unknown source) @ java.awt.eventqueue.dispatcheventimpl(unknown source) @ java.awt.eventqueue.access$400(unknown source) @ java.awt.eventqueue$3.run(unknown source) @ java.awt.eventqueue$3.run(unknown source) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$1.dointersectionprivilege(unknown source) @ java.awt.eventqueue.dispatchevent(unknown source) @ java.awt.eventdispatchthread.pumponeeventforfilters(unknown source) @ java.awt.eventdispatchthread.pumpeventsforfilter(unknown source) @ java.awt.eventdispatchthread.pumpeventsforhierarchy(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.run(unknown source)
bufferedimage
type of image
, image
not type bufferedimage
, could, example, cast bufferedimage
image
.
instead of using imageicon
load image, utilize imageio.read
, returns bufferedimage
so instead of...
sprite healthbar = new sprite((image)new imageicon("res\\gui\\bar.png").getimage()); // never instatiated toolkitimage!!!!!!!!
nb: imageicon
delegates actual loading of image toolkit
, wraps in icon interface
use like...
sprite healthbar = new sprite(imageio.read(new file("res\\gui\\bar.png")));
java user-interface graphics exception-handling
No comments:
Post a Comment