2015-05-21 2 views
0

У меня есть задача нарисовать некоторые точки на карте. Написал некоторый код, но в настоящее время каждая точка, которую я создаю через фигуры, будет добавлена ​​в неправильную позицию внутри моей gridpane. О, и я использую JavaFX.Добавление фигур в GridPane приводит к неправильной позиции

Я добавил изображение в индекс 0,0 моей GridPane, и каждая точка создается через x и y положения MouseEvent на изображении. После этого я добавил созданную точку в качестве дочернего элемента GridPane, и она отображается в центре оси y первой сетки. Пробовал разные вещи, такие как anchorPanes и холст, но, похоже, не может заставить его работать.

код моего зрения: http://pastebin.com/dCb7EN4d

Кодекс мой Main: http://pastebin.com/vp5tzxkG

Я надеюсь, что это достаточно ^^ Просьба помочь!

Привет, Бен

+0

Добро пожаловать в StackOverflow. Когда вы задаете вопросы типа «Почему этот код не работает?», Пожалуйста: (1) создайте минимальный, исполняемый пример, который содержит только достаточно кода для воссоздания проблемы (т. Е. Отправить что-то исполняемое, но не публиковать свои весь проект). Подробнее см. Http://stackoverflow.com/help/mcve. (2) Отправьте свой код в вопросе, вместо того, чтобы ссылаться на него. Это означает, что ваш вопрос по-прежнему будет иметь смысл (для будущих пользователей), даже если pastebin перестанет работать (или перегружается, как сейчас). –

ответ

0

GridPane является управляемым расположением: он будет позиционировать узлы, которые добавляются к нему с помощью свойств установленных вами (используя значения по умолчанию, если вы не установили их). Поэтому, когда вы добавляете круги в область сетки, так как вы не устанавливаете никаких свойств, она поместит ее в ячейку (0,0) и выровнят ее в этой ячейке с использованием настроек по умолчанию; то есть он игнорирует свойства centerX и centerY.

Что вы должны здесь делать, это использовать макет, который не управляет расположением узлов для вас, например Pane (или, возможно, Group). Вы можете поместить ImageView и Circle s в панель, а затем поместите панель в остальную часть вашего макета (на панели прокрутки, я думаю).

Другой вариант вы имеете позвонить setManaged(false) на узлах добавляемых к GridPane для того, чтобы инструктировать GridPane не позиционировать их, хотя это чувствует себя более обходной путь.

Смежные вопросы