Les comparaisons de chaîne se font avec "equals()", pas avec ==.
Avec equals, tu compares la valeur des deux chaînes, avec == tu compares les objets eux-même. Ton problème doit venir de là, je pense.
Je te suggère très fortement, d'ailleurs, de te passer intégralement de String pour les directions, et de passer plutôt par des Enums. Si tu veux vraiment passer par des String, met au moins en place un système de constante. C'est foutrement pas viable là.
Convention Java : classe en UpperCamelCase (tout les mots commencent par une majuscule), variable en lowerCamelCase (tout les mots commencent par une majuscule SAUF le premier).
Pour info, faire ceci :
Rectangle Box = new Rectangle(PosX, PosY, 32, 32);
return Box;
est inutile.
Cela revient à écrire :
return new Rectable(posX, poxY, 32, 32);
L'annotation SuppressWarning est VÉRITABLEMENT À ÉVITER !!! Dans certains cas, c'est justifié. Ici, je pense que c'est tout simplement pour virer un warning que tu ne comprends pas. Un problème, ça se résout, ça ne se cache pas !
Conseil : vas dans les options de compilation de ton IDE, et demande lui de te montrer beaucoup beaucoup de warning (en restant raisonnable), ça te sera utile à terme.