Если узел имеет fx: id (скажем, а), а также обычный id (css id) (скажем, b). Если поиск используется для поиска этого узла:java fx: метод поиска сцены
узел узла = scene.lookup («# а»)
выше оператор возвращает нуль. Но если в обсуждении нет идентификатора css, соответствующего указанному узлу, то вышеприведенный оператор возвращает правильный узел.
При использовании ниже данное утверждение всегда возвращает правильный результат:
узел узла = scene.lookup («# б»)
Может кто-нибудь, пожалуйста, объясните, почему поиск метод ведет себя так странно?
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.text.*?>
<GridPane hgap="14.0" maxHeight="+Infinity" maxWidth="+Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="223.0" prefWidth="323.0" vgap="20.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<VBox maxHeight="+Infinity" maxWidth="+Infinity" minHeight="-Infinity" spacing="7.0" GridPane.rowIndex="0">
<children>
<HBox alignment="TOP_RIGHT">
<children>
<Label fx:id="headerMessage" text="message" textAlignment="LEFT" wrapText="true">
<font>
<Font name="System Bold" size="13.0" />
</font>
</Label>
</children>
</HBox>
<HBox alignment="TOP_RIGHT" spacing="5.0">
<children>
<Label fx:id="qty" text="details" textAlignment="LEFT" wrapText="true">
<font>
<Font size="12.0" />
</font>
</Label>
<TextField fx:id="qtyT" />
</children>
</HBox>
<HBox alignment="TOP_RIGHT" spacing="5.0">
<children>
<Label fx:id="name" text="details" textAlignment="LEFT" wrapText="true">
<font>
<Font size="12.0" />
</font>
</Label>
<TextField fx:id="nameT" />
</children>
</HBox>
<HBox alignment="TOP_RIGHT" spacing="5.0">
<children>
<Label fx:id="remarks" text="details" textAlignment="LEFT" wrapText="true">
<font>
<Font size="12.0" />
</font>
</Label>
<TextArea fx:id="remarksT" prefHeight="60.0" prefWidth="149.0" wrapText="true" />
</children>
</HBox>
</children>
</VBox>
<HBox maxHeight="-Infinity" maxWidth="+Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="25.0" prefWidth="253.0" GridPane.rowIndex="1">
<children>
<Pane maxWidth="+Infinity" HBox.hgrow="ALWAYS" />
<Button id="cancel-button" fx:id="cancelButton" cancelButton="true" minWidth="80.0" mnemonicParsing="false" text="Cancel" HBox.hgrow="NEVER">
<HBox.margin>
<Insets />
</HBox.margin>
</Button>
<HBox fx:id="okParent" alignment="CENTER">
<children>
<Button id="ok-button" fx:id="okButton" minWidth="80.0" mnemonicParsing="false" text="Ok" HBox.hgrow="NEVER">
<HBox.margin>
<Insets left="14.0" />
</HBox.margin>
</Button>
</children>
</HBox>
</children>
</HBox>
</children>
<columnConstraints>
<ColumnConstraints halignment="CENTER" hgrow="ALWAYS" maxWidth="+Infinity" minWidth="-Infinity" />
</columnConstraints>
<padding>
<Insets bottom="14.0" left="14.0" right="14.0" top="14.0" />
</padding>
<rowConstraints>
<RowConstraints maxHeight="+Infinity" minHeight="-Infinity" valignment="CENTER" vgrow="ALWAYS" />
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" vgrow="NEVER" />
</rowConstraints>
</GridPane>
В приведенном выше FXML, поиск работает отлично на FXML идентификаторов для узлов, которые не имеют какой-либо CSS идентификатора. Если присутствует css id, то он возвращает нули
Label headerMessage = (Label) alertStage.getScene().lookup("#headerMessage");
final TextField qty = (TextField) alertStage.getScene().lookup("#qtyT");
Label name = (Label) alertStage.getScene().lookup("#name");
final TextArea remarksT = (TextArea) alertStage.getScene().lookup("#remarksT");
final TextField nameT = (TextField) alertStage.getScene().lookup("#nameT");
Метод поиска не работает только для данного ниже описания.
Button okButton = (Button) alertStage.getScene().lookup("#okButton");
Это странно. Я уверен с 'fx: id', он всегда должен возвращать' null'. Можете ли вы добавить [MCVE] (http://stackoverflow.com/help/mcve), изображающие это поведение? – ItachiUchiha