Центрировать метку на узле в JavaFX 2.0

#java #javafx #javafx-2

#java #javafx #javafx-2

Вопрос:

Я хотел бы иметь возможность отображать узел с определенной меткой, центрированной на узле — например, узел круга или прямоугольника, например, с меткой в центре. Кажется, что это должно быть тривиально, и я уверен, что это так, но относительно редкая документация / учебные пособия в Интернете означают, что я не могу найти ответ!

На данный момент я без проблем могу отобразить метку на узле (по умолчанию она отображается так, что верхняя левая часть метки начинается в центре, что не то, что я хочу) или установить метку, которая будет отображаться справа от узла (установив метку «для» определенного узла)но не размещайте ее посередине! Кто-нибудь может пролить свет на это?

Ответ №1:

Держу пари, что вы ищете что-то другое, кроме макета, но StackPane предоставляет этот тип функциональности.

Из руководства: работа с макетами

StackPane

Панель компоновки стека помещает все узлы в один стек, при этом каждый новый узел добавляется поверх предыдущего узла. Эта модель компоновки обеспечивает простой способ наложения текста на фигуру или изображение или наложения общих фигур для создания сложной формы. На рисунке 1-6 показан значок справки, который создается путем размещения вопросительного знака поверх прямоугольника с градиентным фоном.

введите описание изображения здесь

Код из учебника

Пример 1-4 Создание панели стека

 StackPane stack = new StackPane();
Rectangle helpIcon = new Rectangle(35.0, 25.0);
helpIcon.setFill(new LinearGradient(0,0,0,1, true, CycleMethod.NO_CYCLE,
new Stop[]{
new Stop(0,Color.web("#4977A3")),
new Stop(0.5, Color.web("#B0C6DA")),
new Stop(1,Color.web("#9CB6CF")),}));
helpIcon.setStroke(Color.web("#D0E6FA"));
helpIcon.setArcHeight(3.5);
helpIcon.setArcWidth(3.5);

Text helpText = new Text("?   ");
helpText.setFont(Font.font("Amble Cn", FontWeight.BOLD, 18));
helpText.setFill(Color.WHITE);
helpText.setStroke(Color.web("#7080A0")); 

stack.getChildren().addAll(helpIcon, helpText);
stack.setAlignment(Pos.CENTER_RIGHT);     // Right-justify nodes in stack

HBox.setHgrow(stack, Priority.ALWAYS);    // Give stack any extra space
hbox.getChildren().add(stack);            // Add to HBox from Example 1-2
  

Комментарии:

1. На самом деле, это именно то, что я искал — я просто не искал в нужном месте! Спасибо за это.