Не можете переместить прямоугольник в JavaFX?

1

Я не могу переместить объект прямоугольника в JavaFX. Я поместил прямоугольник внутри стека, но всякий раз, когда я меняю координаты прямоугольника, он не будет двигаться (даже если я изменил координаты инициализации). Так,

Rectangle rect = new Rectangle(150,150,75,75);

будет находиться в центре стека, а также

Rectangle rect = new Rectangle(2043,136,75,75);

Всякий раз, когда я использую

rect.setX();

Прямоугольник вообще не перемещается. Я знаю, что мне не хватает чего-то очень простого, я просто не могу понять. Я не хочу использовать переход, потому что моя цель - просто переместить прямоугольник на несколько пикселей в направлении нажатия клавиши со стрелкой. Так что же я делаю неправильно?

Теги:
javafx

1 ответ

5

Решение

Используйте другой тип контейнера (например, панель), если вы хотите вручную указать координаты компоновки (например, координаты x, y прямоугольника).

Задний план

StackPane - это панель управляемых макетов - она управляет расположением элементов, которые вы размещаете в ней (по умолчанию центрируете элементы в стеке). Поэтому не имеет значения, какие координаты вы дадите Rectangle, когда вы поместите его в StackPane, менеджер макета переместит ваш прямоугольник так, чтобы он находился в центре стека.

JavaFX имеет две концепции для позиционирования, одна - координаты компоновки, другая - дельта переводов, которые добавляются в координаты компоновки. TranslateTransitions работает, изменяя переводные дельта. Перевод предназначен для анимации и временного перемещения. Перевод не зависит и не влияет на значения макета, поэтому вы можете поместить что-то в StackPane и применить к нему TranslateTransition, и он все равно будет перемещаться, но он будет перемещаться из центра стека, поскольку это исходная позиция макета.

  • 0
    Это работает как шарм. Спасибо вам большое!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню