What are you trying to accomplish here? This looks kinda stupid.
Strategy is used with active rendring, paint (and repaint) is used with passive rendering.
In paint() method you should NOT use buffer strategy - it already gives you Graphics object.
And you should not use passive rendering for game, use active rendering. Draw on canvas, don't even touch the window/frame.
for(Tile t : tiles)
g.drawImage(t.img.getImage(), t.x+trackX, t.y+trackY, null);
This is going to be slow if you render every tile with separate render call. Also, you shouldn't have an instance of class per every tile, that's memory inefficinent. You should hold tile types in array.
Okey, I'll have to check the code and change things accordingly.
The Tile.Class holds data of every tile in the grid with their own bounding box, so whenever I pass the mouse I know above wich tile I am. This was the simplest solution for me, instead of doing calculations.
I'll try to come up with something like you said, but if you can give me a hint about how to make the Tile array would be much appreciated.
Thanks for the advice.