Вы не даете подробностей, но я предполагаю, что при масштабировании объект перемещается так же, как и масштаб. Вам нужно будет кое-что знать о графических преобразованиях. Есть два основных подхода:
изменить размер объекта путем масштабирования его координат
применить матрицу преобразования к объекту. Это, вероятно, лучший способ.
Если вы используете Graphics2D (http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Graphics2D.html), у вас будет доступ к преобразованиям.
При изменении размера окна вы захотите определить, какое измерение (ширина или высота) больше всего влияет на шкалу, и выберите другое - это остановит слишком широкое расширение объекта. Рассчитайте одну шкалу и примените ее одинаково к X и Y.
Вероятно, у вас не будет объекта в начале координат. В этом случае вам необходимо выполнить три операции:
- перевести объект в начало координат
- изменить масштаб
- переведите его туда, где он был
Эти операции можно объединить в одну матрицу.
Я не могу быть более определенным, так как не знаю деталей вашей проблемы, но это должно дать вам несколько советов.
Попробуйте примеры в:
http://www.java2s.com/Code/Java/2D-Graphics-GUI/Linetransformationrotationshearscale.htm
который должен показать вам некоторые эффекты.