2013-02-09 16 views
5

mi chiedo come si possa utilizzare fx:include in combinazione con il JavaFX Scene Builder, quindi:JavaFX Scene Builder e fx: includono

Immaginate Ho un (file borderpane.fxml) BorderPane. Nella sezione centrale voglio inserire un Label che deve tuttavia essere definito in un file FXML separato, ad es. label.fxml.

Primo problema di questo: Poiché lo label.fxml verrà integrato in un contenitore (il BorderPane) non è necessario uno solo. Tuttavia, SceneBuilder offre solo la possibilità di creare layout come contenitore?

Secondo problema: posso creare il label.fxml manualmente e quindi adattarsi borderpane.fxml manualmente per includere il label.fxml. Quindi posso caricare il file borderpane.fxml usando SceneBuilder senza problemi. Tuttavia quando ho ora modificare il testo dell'etichetta e scegliere "Salva", non il label.fxml viene modificato, ma invece la borderpane.fxml viene modificato in questo modo:

# borderpane.fxml 
<fx:include source="label.fxml" text="the new label text" /> 

Il nuovo testo etichetta deve essere scritto label.fxml, non borderpane.fxml, cosa è attualmente fatto.

  • Sto facendo qualcosa di sbagliato?

  • SceneBuilder non è destinato all'uso in combinazione con fx: include?

  • Voglio controller separati per parti della mia GUI, penso che questo sia abbastanza logicamente/normale, quindi questo scenario di utilizzo pratico è sperabilmente supportato in qualche modo da SceneBuilder?

risposta

1

Non sono a conoscenza di alcun metodo per aggiungere nodi ai contol FXML incorporati utilizzando il generatore di scene.

Tuttavia, è possibile farlo utilizzando il codice Java. Se borderpane.fxml ha definito un controller con un metodo chiamato #setCentre per aggiungere un nodo, è possibile caricare label.fxml nel controller principale di borderpane.fxml e aggiungere l'etichetta utilizzando il metodo definito.

Una domanda però, stai dando un esempio semplificato o stai effettivamente creando file FXML per etichette e riquadri dei bordi? Se è così, penso che questo renderà il tuo programma più complesso che aggiungere i controlli a un controllo più ampio.

6

Sembra che Scene Builder 2 abbia risolto sia il problema che hai menzionato.

Primo (risolto) problema: il nodo radice non deve essere un Pane. Ad esempio, può essere un problema Label

Second (risolto): Il menu File > Include > FXML... può essere utilizzato per includere un file FXML esterna. Non è possibile modificare il file incluso. Ad ogni modo, facendo clic con il pulsante destro del mouse nella vista Documento verrà visualizzata la voce di menu "Modifica file incluso", che apre un'altra finestra di Scene Builder per quel file.

In conclusione, Scene Builder 2 gestisce correttamente l'elemento fx:include.

+0

Bella spiegazione ma c'è un problema: se si include il file fxml non è possibile trascinarlo nel builder di scence per metterlo dove vuoi nella tua applicazione! – SlimenTN

Problemi correlati