2015-07-13 4 views
0

в качестве заголовка запрашивается возможно?JavaFX обнаруживает, была ли форма присвоена региону/родительскому/узлу

например. Предположим, у меня есть пользовательский класс, который расширяет Shape

private class CR extends Rectangle{ 
    public CR(){} 
} 
CR cr = new CR(); //normal rectangle 
Pane pane = new Pane();// my node who extends region 
pane.setPrefSize(100.0,100.0); 
pane.setShape(cr); // here is what i am interested in 

я хочу знать, когда cr был установлен в Node, есть ли какие-либо привязок, или каким-либо образом я могу получать уведомления?

резюмировать У меня есть два вопроса

  • есть способ обнаружения либо с креплениями или какой-либо логики, когда ваш пользовательский класс Shape создается в Region. ?

  • Могу ли я получить ссылку на Node/Region/Parent?

Edit:

я не думаю/я не - доступ к панели или узла, который собирается установить свою форму в качестве пользовательской формы - (реализации моего Shape), что-то вроде моего class является библиотекой/оболочкой.

также мой заказ Shape не простирающийся Rectangle но только ради пробы, но я простирающийся Path с простирается Shape рисовать комплекс Shape

, если его возможно я положу щедрот 300 в качестве подарка

+0

Каждый узел имеет ['parentProperty()') (http://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#parentProperty). Можете ли вы просто зарегистрировать слушателя с этим, или я чего-то не хватает? –

+0

да, я тестировал getParent(), но он имеет тенденцию быть нулевым, ну, с другой стороны, это не значит, что я имею доступ к панели или узлу, который установит свою форму в качестве настраиваемой формы, вы получите меня сэр? @James_D – Elltz

+0

интересно, зачем вам это нужно? – kleopatra

ответ

0
boolean check = pane.contains(cr .getX(),cr .getY()); 
+0

Спасибо за ваш ответ Sir Fevly, но в моем классе формы, как мне получить ссылку на панель, это был всего лишь некоторый пример кода, но у меня нет ссылки на панель, только мой класс, и мне нужен способ быть уведомляется, когда моя форма была назначена региону, а также получить ссылку на него – Elltz

+0

, почему не просто передать ссылку 'pane' на конструктор CR в качестве аргумента? –

+0

приятно, но что, если разработчик passe 'pane1' для конструктора и задает форму скорее' pane2'? мой класс будет нарушен, причина в том, что мне нужна панель или узел, форма которых была задана с использованием моего настраиваемого класса формы, чтобы испускать некоторые свойства, поскольку это не просто нормальный прямоугольник, а сложная форма, и это не значит, что мой бесполезный , Является ли это возможным? Кстати? – Elltz

0

Я не совсем понятно, что вы просите, но делает:

cr.parentProperty().addListener((obs, oldParent, newParent) -> { 

    System.out.println("Parent changed from "+oldParent+" to "+newParent); 

    if (newParent != null) { 
     // do whatever you need here... 
    } 
}); 

делать то, что вам нужно?

+0

Извините за задержку Sir James_D, он ничего не делает, на самом деле, я имею в виду, что вы можете изменить форму узла, используя дочерние элементы класса формы, и я расширяю дочерний элемент формы, и я хочу, чтобы этот ребенок был уведомлен если он изменяет форму узла в данный момент, поэтому я могу играть с этим узлом для удовлетворения определенных изменений формы – Elltz