Java SceneBuilder节点不可选择
在我的JavaFX应用程序中,一些节点显示在预览中,但不可选择,也不显示在层次结构中。SceneBuilder非目标示例: 在本例中,First Name列不可作为目标,即使其代码与Last Name列相同,也不会显示在层次结构中。 新的也一样。。。编辑。。。按钮 我的SceneBuilder版本是8.3.0。 我使用的是eclipse,如果必须手动操作,我将通过FXGraph编辑fxml FXML:Java SceneBuilder节点不可选择,java,javafx,javafx-8,fxml,scenebuilder,Java,Javafx,Javafx 8,Fxml,Scenebuilder,在我的JavaFX应用程序中,一些节点显示在预览中,但不可选择,也不显示在层次结构中。SceneBuilder非目标示例: 在本例中,First Name列不可作为目标,即使其代码与Last Name列相同,也不会显示在层次结构中。 新的也一样。。。编辑。。。按钮 我的SceneBuilder版本是8.3.0。 我使用的是eclipse,如果必须手动操作,我将通过FXGraph编辑fxml FXML: 在FXML中的多个位置,重复定义相同标记的内容,如以下代码段: <columns>
在FXML中的多个位置,重复定义相同标记的内容,如以下代码段:
<columns>
<TableColumn fx:id="firstNameColumn" prefWidth="75.0" text="First Name"/>
</columns>
<columns> <!-- repetition!! -->
<TableColumn fx:id="lastNameColumn" prefWidth="75.0" text="Last Name"/>
</columns>
这是不正确的-您应该打开标记一次,然后指定所有子项,然后关闭它一次。对于GridPane的子项,您的操作是正确的,例如:
<GridPane layoutX="67.0" layoutY="78.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="30.0">
<children>
<Label text="First Name"/>
<Label text="Last Name" GridPane.rowIndex="1"/>
<Label text="Street" GridPane.rowIndex="2"/>
...
</children>
</GridPane>
根据我的经验,JavaFx本身接受in,并按预期显示一些非常有趣的FXML构造,但SceneBuilder倾向于更保守,只接受典型的构造。这可能就是预览看起来不错,但层次结构不完整的原因。如果手动编辑FXML,请首先查看SceneBuilder创建相同结构的方式—这是它所期望的方式
如果在所有位置更正嵌套,则生成的FXML为:
<AnchorPane xmlns:fx="http://javafx.com/fxml" fx:controller="de.is2.address.view.PersonOverviewController"
prefHeight="300.0" prefWidth="600.0">
<children>
<SplitPane dividerPositions="0.29797979797979796" layoutX="130.0" layoutY="70.0" prefHeight="300.0"
prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0"
AnchorPane.topAnchor="0.0">
<items>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
<children>
<TableView fx:id="personTable" layoutX="-25.0" layoutY="-21.0" prefHeight="200.0"
prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0"
AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<columns>
<TableColumn fx:id="firstNameColumn" prefWidth="75.0" text="First Name" />
<TableColumn fx:id="lastNameColumn" prefWidth="75.0" text="Last Name" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView>
</children>
</AnchorPane>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
<children>
<Label layoutX="54.0" layoutY="37.0" text="Person Details" AnchorPane.leftAnchor="5.0"
AnchorPane.topAnchor="5.0" />
<GridPane layoutX="67.0" layoutY="78.0" AnchorPane.leftAnchor="5.0"
AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="30.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Label text="First Name" />
<Label text="Last Name" GridPane.rowIndex="1" />
<Label text="Street" GridPane.rowIndex="2" />
<Label text="City" GridPane.rowIndex="3" />
<Label text="Postal Code" GridPane.rowIndex="4" />
<Label text="Birthday" GridPane.rowIndex="5" />
<Label fx:id="firstNameLabel" text="Label" GridPane.columnIndex="1" />
<Label fx:id="lastNameLabel" text="Label" GridPane.columnIndex="1"
GridPane.rowIndex="1" />
<Label fx:id="streetLabel" text="Label" GridPane.columnIndex="1"
GridPane.rowIndex="2" />
<Label fx:id="cityLabel" text="Label" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<Label fx:id="postalCodeLabel" text="Label" GridPane.columnIndex="1"
GridPane.rowIndex="4" />
<Label fx:id="birthdayLabel" text="Label" GridPane.columnIndex="1"
GridPane.rowIndex="5" />
</children>
</GridPane>
<ButtonBar layoutX="203.0" layoutY="244.0" prefHeight="39.0" prefWidth="265.0"
AnchorPane.bottomAnchor="5.0" AnchorPane.rightAnchor="10.0">
<buttons>
<Button mnemonicParsing="false" text="New..." />
<Button mnemonicParsing="false" text="Edit..." />
<Button mnemonicParsing="false" onAction="#handleDeletePerson" text="Delete" />
</buttons>
</ButtonBar>
</children>
</AnchorPane>
</items>
</SplitPane>
</children>
</AnchorPane>
这在SceneBuilder 8.4.1中提供了所需的结果:所有表格列和按钮栏中的所有按钮都将在层次结构中显示并可选择。您使用的是哪个SceneBuilder版本?网格窗格显示61行13列?你真的都有吗?当您选择网格窗格时,是否看到它?您有一个名为“LastName”的列,但没有名为“First Name”的列。“LastName”列是否可选?@JoséPereda我的SceneBuilder版本是8.3.0。61行和13列都是奇怪的未使用代码,我不确定它们来自何处,也许我也在使用FXGraph导致了奇怪的交互。否则网格窗格工作正常。@Kerry姓氏列按插入方式工作,可以选择。您能尝试删除或清除该代码吗?我确实从头开始尝试过使用拆分窗格和TableView的布局,但我无法重现您的问题。
<AnchorPane xmlns:fx="http://javafx.com/fxml" fx:controller="de.is2.address.view.PersonOverviewController"
prefHeight="300.0" prefWidth="600.0">
<children>
<SplitPane dividerPositions="0.29797979797979796" layoutX="130.0" layoutY="70.0" prefHeight="300.0"
prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0"
AnchorPane.topAnchor="0.0">
<items>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
<children>
<TableView fx:id="personTable" layoutX="-25.0" layoutY="-21.0" prefHeight="200.0"
prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0"
AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<columns>
<TableColumn fx:id="firstNameColumn" prefWidth="75.0" text="First Name" />
<TableColumn fx:id="lastNameColumn" prefWidth="75.0" text="Last Name" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView>
</children>
</AnchorPane>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
<children>
<Label layoutX="54.0" layoutY="37.0" text="Person Details" AnchorPane.leftAnchor="5.0"
AnchorPane.topAnchor="5.0" />
<GridPane layoutX="67.0" layoutY="78.0" AnchorPane.leftAnchor="5.0"
AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="30.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Label text="First Name" />
<Label text="Last Name" GridPane.rowIndex="1" />
<Label text="Street" GridPane.rowIndex="2" />
<Label text="City" GridPane.rowIndex="3" />
<Label text="Postal Code" GridPane.rowIndex="4" />
<Label text="Birthday" GridPane.rowIndex="5" />
<Label fx:id="firstNameLabel" text="Label" GridPane.columnIndex="1" />
<Label fx:id="lastNameLabel" text="Label" GridPane.columnIndex="1"
GridPane.rowIndex="1" />
<Label fx:id="streetLabel" text="Label" GridPane.columnIndex="1"
GridPane.rowIndex="2" />
<Label fx:id="cityLabel" text="Label" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<Label fx:id="postalCodeLabel" text="Label" GridPane.columnIndex="1"
GridPane.rowIndex="4" />
<Label fx:id="birthdayLabel" text="Label" GridPane.columnIndex="1"
GridPane.rowIndex="5" />
</children>
</GridPane>
<ButtonBar layoutX="203.0" layoutY="244.0" prefHeight="39.0" prefWidth="265.0"
AnchorPane.bottomAnchor="5.0" AnchorPane.rightAnchor="10.0">
<buttons>
<Button mnemonicParsing="false" text="New..." />
<Button mnemonicParsing="false" text="Edit..." />
<Button mnemonicParsing="false" onAction="#handleDeletePerson" text="Delete" />
</buttons>
</ButtonBar>
</children>
</AnchorPane>
</items>
</SplitPane>
</children>
</AnchorPane>