For some reason, I can't seem to drawImage() at all with this new ScreenManager class. drawString() works perfectly, setColor() works with backgrounds, foregrounds. I'm suspecting that the error is loadImages() but it worked with the Screen class.

Here's my Core class's code:

import java.awt.*;
import javax.swing.*;
import java.awt.image.*;
import java.lang.reflect.InvocationTargetException;

public abstract class Core
{
private static DisplayMode modes[] = 
{
new DisplayMode(800,600,32,0),
new DisplayMode(800,600,24,0),
new DisplayMode(800,600,16,0),
new DisplayMode(640,480,32,0),
new DisplayMode(640,480,24,0),
new DisplayMode(640,480,16,0),
};

private boolean running;
protected ScreenManager s;

// Stop method
public void stop()
{
running = false;
}

// call init and gameloop
public void run()
{
try{
init();
gameLoop();
}finally{
s.restoreScreen();
}
}

// set to full screen
public void init()
{
s = new ScreenManager();
DisplayMode dm = s.findFirstCompatibleMode(modes);
s.setFullScreen(dm);

Window w = s.getFullScreenWindow();
w.setFont(new Font("Arial", Font.PLAIN, 20));
w.setBackground(Color.WHITE);
w.setForeground(Color.GREEN);
running = true;
}

// main gameLoop
public void gameLoop()
{
long startTime = System.currentTimeMillis();
long cumTime = startTime;

while(running)
{
long timePassed = System.currentTimeMillis() - cumTime;
cumTime += timePassed;

update(timePassed);

Graphics2D g = s.getGraphics();
draw(g);
g.dispose();
s.update();

try
{
Thread.sleep(20);
}catch(Exception ex) {}
}
}

// update animation
public void update(long timePassed)
{}

public abstract void draw(Graphics2D g);

}

---------- and here's my "Game" class relevant parts:

Image face1 = new ImageIcon("C:\\Users\\Abdo Salem\\Pictures\\Resources\\Pokemon\\PKMN.NET Sprite Resource 4\\Pokémon\\BW\\back\\1.jpg").getImage();
Image face2 = new ImageIcon("C:\\Users\\Abdo Salem\\Pictures\\Resources\\Pokemon\\PKMN.NET Sprite Resource 4\\Pokémon\\BW\\back\\2.jpg").getImage();

public synchronized void draw(Graphics2D g)
{
Window w = s.getFullScreenWindow();

g.drawImage(pokemon.getImage(),Math.round(pokemon.x),Math.round(pokemon.y),null);

g.setColor(w.getBackground());
g.fillRect(0,0,s.getWidth(),s.getHeight());

g.setColor(w.getForeground());


g.drawString("A7aaaaaa", Math.round(pokemon.x),Math.round(pokemon.y));


}