I tried to make a void that prints text… but with my own font-sheet.
This is what I have (giving an error):
Board class:
package javadaemon.com.GraphicsProject;
import java.awt.Canvas;
import java.awt.Graphics;
/**
*
* @author mads
*/
public class Board extends Canvas {
public Board(int x, int y) {
this.setSize(x, y);
}
@Override
public void paint(Graphics g) {
//g.drawRect(10, 20, 40, 40);
this.drawString("Hello", g, 40, 40);
}
String[] chars = {
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
".,!?:;\"'+-=/\\< "
};
public void drawString(String string, Graphics g, int x, int y) {
string = string.toUpperCase();
for (int i=0; i<string.length(); i++) {
char ch = string.charAt(i);
for (int ys=0; ys<chars.length; ys++) {
int xs = chars[ys].indexOf(ch);
if (xs>=0) {
g.drawImage(Art.guys[xs][ys+9], x+i*6, y, null);
}
}
}
}
}
Art class:
package javadaemon.com.GraphicsProject;
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class Art {
public static BufferedImage[][] guys = split(load("/guys.png"), 6, 6);
public static BufferedImage load(String name) {
try {
BufferedImage org = ImageIO.read(Art.class.getResource(name));
BufferedImage res = new BufferedImage(org.getWidth(), org.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics g = res.getGraphics();
g.drawImage(org, 0, 0, null, null);
g.dispose();
return res;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private static BufferedImage[][] split(BufferedImage src, int xs, int ys) {
int xSlices = src.getWidth() / xs;
int ySlices = src.getHeight() / ys;
BufferedImage[][] res = new BufferedImage[xSlices][ySlices];
for (int x = 0; x < xSlices; x++) {
for (int y = 0; y < ySlices; y++) {
res[x][y] = new BufferedImage(xs, ys, BufferedImage.TYPE_INT_ARGB);
Graphics g = res[x][y].getGraphics();
g.drawImage(src, -x * xs, -y * ys, null);
g.dispose();
}
}
return res;
}
}
GraphicsProject class:
package javadaemon.com.GraphicsProject;
import javax.swing.JFrame;
/**
*
* @author mads
*/
public class GraphicsProject {
public GraphicsProject() {
JFrame frame = new JFrame("Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Board board = new Board(400, 200);
frame.add(board);
frame.pack();
frame.setVisible(true);
}
public static void main(String args[]) {
new GraphicsProject();
}
}
Most of the code is from Metagun by Markus Persson. I used that just to get it working… turns out it wouldn’t.
Help please?
EDIT:
This is the error i get:
run:
03-09-2010 22:10:25 com.sun.corba.se.impl.ior.IORImpl getProfile
WARNING: "IOP00511201: (INV_OBJREF) IOR must have at least one IIOP profile"
org.omg.CORBA.INV_OBJREF: vmcid: SUN minor code: 1201 completed: No
at com.sun.corba.se.impl.logging.IORSystemException.iorMustHaveIiopProfile(IORSystemException.java:473)
at com.sun.corba.se.impl.logging.IORSystemException.iorMustHaveIiopProfile(IORSystemException.java:495)
at com.sun.corba.se.impl.ior.IORImpl.getProfile(IORImpl.java:334)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_Object(CDRInputStream_1_0.java:787)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_Object(CDRInputStream_1_0.java:761)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_Object(CDRInputStream.java:231)
at com.sun.corba.se.impl.resolver.INSURLOperationImpl.getIORFromString(INSURLOperationImpl.java:120)
at com.sun.corba.se.impl.resolver.INSURLOperationImpl.operate(INSURLOperationImpl.java:130)
at com.sun.corba.se.impl.orb.ORBImpl.string_to_object(ORBImpl.java:836)
at org.GNOME.Accessibility.AccessUtil.getRegistryObject(AccessUtil.java:143)
at org.GNOME.Accessibility.JavaBridge.registerApplication(JavaBridge.java:1147)
at org.GNOME.Accessibility.JavaBridge.<init>(JavaBridge.java:398)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at java.awt.Toolkit.loadAssistiveTechnologies(Toolkit.java:786)
at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:875)
at java.awt.Window.getToolkit(Window.java:1170)
at java.awt.Window.init(Window.java:400)
at java.awt.Window.<init>(Window.java:438)
at java.awt.Frame.<init>(Frame.java:419)
at javax.swing.JFrame.<init>(JFrame.java:218)
at javadaemon.com.GraphicsProject.GraphicsProject.<init>(GraphicsProject.java:12)
at javadaemon.com.GraphicsProject.GraphicsProject.main(GraphicsProject.java:22)
Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
at javadaemon.com.GraphicsProject.Board.drawString(Board.java:35)
at javadaemon.com.GraphicsProject.Board.paint(Board.java:19)
at sun.awt.RepaintArea.paintComponent(RepaintArea.java:264)
at sun.awt.X11.XRepaintArea.paintComponent(XRepaintArea.java:73)
at sun.awt.RepaintArea.paint(RepaintArea.java:240)
at sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:709)
at java.awt.Component.dispatchEventImpl(Component.java:4545)
at java.awt.Component.dispatchEvent(Component.java:4295)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:604)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: input == null!
at javadaemon.com.GraphicsProject.Art.load(Art.java:20)
at javadaemon.com.GraphicsProject.Art.<clinit>(Art.java:9)
... 15 more
Caused by: java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1378)
at javadaemon.com.GraphicsProject.Art.load(Art.java:13)
... 16 more
BUILD SUCCESSFUL (total time: 3 minutes 10 seconds)
EDIT TWO:
I have the guys image in a folder called res. It is together with the src folder.