javafx scene.lookup

Я конвертирую существующее приложение Swing в JavaFX. Я бы подумал, что этот код вернет узел с именем "#paneRightBottom", но он возвращает null. Используя отладчик netbeans, я могу углубиться в «topNode» и найти узел «#paneRightBottom» на шесть уровней глубиной, так что он там. Я прочитал онлайн-документацию и думаю, что должен получить узел. Кто-нибудь знает, где я ошибся?

        Node topNode = FXMLLoader.load(AFI.class.getResource("afimain.fxml"));
        System.out.println(topNode.getId());
        Node node = topNode.lookup("#paneRightBottom");

person Bob Smith    schedule 28.12.2012    source источник


Ответы (1)


Убедитесь, что узел, который вы пытаетесь найти, имеет id="paneRightBottom", а не fx:id="paneRightBottom". Если да, то дайте более подробную информацию, разместив также свой файл fxml.

person Uluk Biy    schedule 28.12.2012
comment
Спасибо @Uluk, я уже разметил xml для учета различных форматов идентификаторов. Я все еще смотрю на это, но я считаю, что это связано с разделенными панелями, не считая панели дочерними, а скорее элементами. Это делает написание метода обхода немного менее элегантным, необходимость использования instanceof для проверки разделенных панелей почему-то кажется неправильной. Я не считал разбитые панели проблемой, поэтому не - person Bob Smith; 29.12.2012
comment
@BobSmith. Если вы еще не смотрели, см. JavaFX 2.0 + FXML - странное поведение при поиске. Думаю, ответ можно применить и к вашему варианту использования. - person Uluk Biy; 29.12.2012