Non sapendo cosa siano dist, D1 e D2 posso solo supporre che che le condizioni vengano verificate di volta in volta.
Quindi, prova a procedere così:
codice:
Graphics g = pannello.getGraphics();

if (dist > D1) {
   g.setColor(new Color(0, 0, 155));
} else if (dist < D1 && dist > D2) { 
   g.setColor(new Color(155, 0, 0));
} else {
   g.setColor(new Color(0, 155, 0));
}
g.drawRect(x-2,y-2,4,4);
Non dovrebbe cambiare niente in quanto sono sempre dei riferimenti, ma tentar non nuoce.


Ciao.