Рисование интерактивных путей в JavaFX 8?

(пожалуйста, извините за любые ошибки в вопросе / форматировании вопроса, так как я новичок)

[Обратите внимание, что я пока не могу размещать здесь код, а код FXML не стоит размещать, верно? Кроме того, у меня очень мало опыта программирования GUI до этого ... Сначала я взял JavaFX 8, потому что использую Java, и слышал, что FX >> Swing разными способами]

Я пытаюсь создать графический интерфейс, который позволяет пользователю вводить числа головоломки NumberLink (через события действий мыши), а затем отображать головоломку в сетке с функциями для рисования пути и отменять его. Это почти та же функциональность, что и в Numberlink на Николи. Загадка довольно интересная, и это правила. Пользовательский интерфейс предназначен для интерактивного решения головоломки путем рисования линий и т. Д., Как на сайте Nikoli. Решатель будет добавлен позже.

  1. В моем проекте у меня есть Stage, в котором установка Scene запрашивает у пользователя строки и столбцы (чтобы взять размер головоломки),

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

  3. на третьем этапе я должен отображать числа для пользователя так же, как на сайте Nikoli (выделение пар чисел при наведении курсора мыши также является необходимой функцией, с которой, я думаю, я могу справиться с помощью CSS) .. и пользователь должен нарисовать пути между числами, как и на этом сайте (я думал, что классы VLineTo и HLineTo подойдут ... но я не уверен и не могу найти никаких альтернатив) Пожалуйста, помогите с этим ...

Имея это в виду, я сделал макеты фиктивных графических интерфейсов на основе FXML, чтобы проверить, работают ли мои идеи ... и я не могу заставить GridPane рисовать линии поверх него (то есть я не могу размещать объекты Line, такие как HLineTo, поверх панелей сетки ) .... есть ли другой способ сделать то, что мне нужно? Я также подумал о создании нескольких Canvas объектов в сетке (каждый квадрат - это отдельный холст), имеющих числа как объекты Text и холст поверх сетки с включенной прозрачностью, и их обоих на StackPane, но тогда, дочерние элементы StackPane не будут синхронизированы.

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


person Community    schedule 06.08.2014    source источник
comment
Вы всегда должны иметь возможность разместить код ...   -  person Dan Is Fiddling By Firelight    schedule 07.08.2014


Ответы (1)


Вы можете заключить GridPane в AnchorPane, а затем использовать getChildren().add(Node node).

Предполагая, что ваш контроллер определил <AnchorPane fx:id="anchorpane"...> и implements Initializable

@FXML private AnchorPane anchorpane;

@Override
public void initialize(URL location, ResourceBundle resources) {
    Line line = new Line(double startX, double startY, double endX, double endY);

    anchorpane.getChildren.add(line);
}

ПРИМЕЧАНИЕ: строка фактически должна зависеть от событий мыши, поэтому ее даже не должно быть в вашем методе инициализации; но это должно помочь вам начать то, что вы хотите делать.

HTH

person Forager    schedule 08.08.2014
comment
Спасибо за ответ ! Хорошая идея - обернуть GridPane в AnchorPane и нарисовать поверх него. позвольте мне попробовать и вернуться к вам. - person ; 09.08.2014