started - javafx tutorial español
La búsqueda de escena JavaFx devuelve nulo (1)
Button btn = new Button("ohot");
btn.setId("testId");
itemSection.getChildren().add(btn);
Node nds = itemSection.lookup("#testId");
¿Qué está mal con el código de arriba? Estoy obteniendo nds = null, debería ser btn
Búsquedas en conjunto con applyCSS
Las búsquedas se basan en CSS . Por lo tanto, CSS debe aplicarse a la escena para que pueda buscar elementos en la escena. Consulte la documentación de applyCSS
para obtener más información. Para obtener resultados precisos de su búsqueda, es posible que también desee invocar el diseño , ya que la operación de diseño puede afectar los atributos del gráfico de escena.
Entonces podrías hacer esto:
Button btn = new Button("ohot");
btn.setId("testId");
itemSection.getChildren().add(btn);
itemSection.applyCss();
itemSection.layout();
Node nds = itemSection.lookup("#testId");
Búsqueda alternativa después de mostrar un escenario
Tenga en cuenta que algunas operaciones en JavaFX, como mostrar inicialmente un escenario o esperar que ocurra un pulso , ejecutarán implícitamente una aplicación CSS, pero la mayoría de las operaciones no lo harán.
Entonces también puedes hacer esto:
Button btn = new Button("ohot");
btn.setId("testId");
itemSection.getChildren().add(btn);
stage.setScene(new Scene(itemSection);
stage.show();
Node nds = itemSection.lookup("#testId");
En búsquedas basadas en CSS VS referencias explícitas
A menudo, se prefiere almacenar y usar referencias explícitas en su código para usar búsquedas. A diferencia de una búsqueda, el uso de una referencia explícita es seguro y no depende de una aplicación de CSS. La generación de referencias explícitas también se puede facilitar mediante el uso de JavaFX y FXML con la anotación @FXML para la inyección de referencia de tipo seguro. Sin embargo, tanto la búsqueda como los enfoques de referencia explícitos tienen casos de uso válidos, por lo que se trata realmente de utilizar el enfoque correcto en el momento adecuado.