Something I did cause I was lazy, left my background as a solid Pink and then in the code you can load your spritesheet in and break it to pixels, then just do not render the Pink.
this was not the best way but back when I was learning it was a quick fix.
Edit: Quick Google trip
http://www.wikihow.com/Create-a-Transparent-PNG-File-With-Paint-Shop-Pro <-- That help?
http://www.pkidd.com/transgif.htm <-- or the bottom of this one?
Very old code here for you as well, just try to make it better 
something like this:
public int[] pixels;
private final int ALPHA_COL = 0xFFFF00FF;
/*
* @path the Path to the spritesheet
* @width the spritesheet width
* @height the Spritesheet Height
*/
public SpriteSheet(String path, int width, int height) {
this.path = path;
this.width= width;
this.height = height;
pixels = new int[width * height];
load();
}
private void load() {
try {
Logger.logCLass(this, "Loading: " + path, false);
BufferedImage image = ImageIO.read(SpriteSheet.class.getResource(path));
width = image.getWidth();
height = image.getHeight();
image.getRGB(0, 0, width, height, pixels, 0, width);
} catch (IOException e) {
e.printStackTrace();
}
}
public void renderSheet(int xp, int yp, SpriteSheet sprite) {
for (int y = 0; y < sprite.height; y++) {
int ya = y + yp;
int ys = y;
for (int x = 0; x < sprite.width; x++) {
int xa = x + xp;
int xs = x;
if (xa < 0 || xa >= width || ya < 0 || ya >= height) continue;
int col = sprite.pixels[xs + ys * sprite.width];
if (col != ALPHA_COL) pixels[xa + ya * width] = col;
}
}
}
This code is old and will need refactoring, but you should get the gist of it.
Hope this helps. 