Поиск в сочетании с applyCSS
Lookups основаны на CSS . Таким образом, CSS необходимо применять к сценам, чтобы вы могли искать объекты в сцене. Для получения дополнительной информации см. Документацию applyCSS
. Чтобы получить точные результаты поиска, вы также можете вызвать layout , поскольку операция макета может влиять на атрибуты графа сцены.
Итак, вы могли бы сделать это:
Button btn = new Button("ohot");
btn.setId("testId");
itemSection.getChildren().add(btn);
itemSection.applyCss();
itemSection.layout();
Node nds = itemSection.lookup("#testId");
Альтернативный поиск после показа сцены
Обратите внимание, что некоторые операции в JavaFX, такие как изначально , показывающие этап или ожидающий pulse , будет неявно выполнять приложение CSS, но большинство операций не будет.
Таким образом, вы также можете сделать это:
Button btn = new Button("ohot");
btn.setId("testId");
itemSection.getChildren().add(btn);
stage.setScene(new Scene(itemSection);
stage.show();
Node nds = itemSection.lookup("#testId");
В отношении поиска на основе CSS VS явные ссылки
Хранение и использование явных ссылок в вашем коде часто предпочитают использовать поисковые запросы. В отличие от поиска, использование явной ссылки безопасно типа и не зависит от приложения CSS. Генерирование явных ссылок также может быть облегчено с помощью JavaFX и FXML с аннотацией @FXML для безрецидивной ссылки. Тем не менее, как поисковые, так и явные ссылочные подходы имеют обоснованные варианты использования, поэтому на самом деле это просто вопрос правильного подхода в нужное время.
используйте DeploymentItem
атрибут
using System;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using CarMaker;
namespace DeploymentTest
{
[TestClass]
public class UnitTest1
{
[TestMethod()]
[DeploymentItem("testFile1.xml")]
public void ConstructorTest()
{
string file = "testFile1.xml";
Assert.IsTrue(File.Exists(file), "deployment failed: " + file +
" did not get deployed");
}
}
}