2017-10-24 15 views
0

내 JavaFX 응용 프로그램에서 일부 노드는 미리보기에 표시되지만 선택할 수는 없으며 계층 구조에 표시되지 않습니다. SceneBuilder untargetable 예 : "이름"열이 타겟팅하지 않고는 "성"열 같은 코드가 비록 계층에 표시되지 않습니다이 예에서SceneBuilder 노드를 선택할 수 없음

SceneBuilder untargetable example

. "New ..."및 "Edit ..."버튼과 동일한 기능입니다.

내 SceneBuilder 버전은 8.3.0입니다. 나는 이클립스를 사용하고 FXGraph를 통해 fxml을 수동으로 수정해야한다.

FXML : 당신의 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"/> 
         </columns> 
         <columns> 
          <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> 
         <columnConstraints> 
          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> 
         </columnConstraints> 
         <rowConstraints> 
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> 
         </rowConstraints> 
         <rowConstraints> 
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> 
         </rowConstraints> 
         <rowConstraints> 
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> 
         </rowConstraints> 
         <rowConstraints> 
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> 
         </rowConstraints> 
         <rowConstraints> 
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> 
         </rowConstraints> 
         <rowConstraints> 
          <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..."/> 
         </buttons> 
         <buttons> 
          <Button mnemonicParsing="false" text="Edit..."/> 
         </buttons> 
         <buttons> 
          <Button mnemonicParsing="false" onAction="#handleDeletePerson" text="Delete"/> 
         </buttons> 
        </ButtonBar> 
       </children> 
      </AnchorPane> 
     </items> 
    </SplitPane> 
</children> 

+1

사용중인 SceneBuilder 버전은 무엇입니까? GridPane에는 61 개의 행과 13 개의 열이 표시됩니까? 당신은 실제로 그들 모두를 가지고 있습니까? GridPane을 선택할 때 표시됩니까? –

+0

'LastName'이라는 열이 있지만 'First Name'이라는 열은 없습니다. '성'열을 선택할 수 있습니까? – Kerry

+0

@ JoséPereda 내 SceneBuilder 버전은 8.3.0입니다. 61 개의 행과 13 개의 열이 사용되지 않은 이상한 코드였습니다. 어디서 왔는지 모르겠습니다. FXGraph를 사용하면 어쩌면 이상한 상호 작용이 생길 수도 있습니다. 그렇지 않으면 격자판이 정상적으로 작동합니다. – Julius

답변

1

는 :

<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 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> 

, 자바 FX 자체가 받아들이는 아주 흥미로운 FXML 구조를하지만, SceneBuilder는 보수적 만 경향이있다 : 당신은 예를 들어, GridPane의 아이들을 위해 제대로 일을 전형적인 구조를 받아들입니다. 아마 미리보기가 정상적으로 보이지만 계층 구조가 불완전한 이유 일 수 있습니다. FXML을 손으로 편집한다면, 먼저 SceneBuilder가 동일한 구조를 생성하는 방법을 살펴보십시오 - 그것이 예상되는 방식입니다. 당신은 모든 곳에서 둥지를 해결하는 경우

는 결과 FXML는 다음에 표시되는 모든 테이블 컬럼과 ButtonBar 컨트롤의 모든 버튼과 선택 :

<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에서 원하는 결과를 제공 계층.