Come convertire un normale progetto java in intellij in un progetto JavaFx

Attualmente sto usando un normale progetto java (progetto gradle) e voglio convertirlo in un progetto JavaFx senza dover reimportare le sorgenti esistenti in un nuovo progetto Javafx. C’è un modo per raggiungere questo objective?

Non c’è niente da convertire.

Non credo ci sia alcuna differenza in Idea tra un progetto Java “normale” e un progetto JavaFX.

Certo, in Idea 12.x + c’è una procedura guidata che puoi usare per creare un nuovo progetto JavaFX. Ma penso che tutto ciò che fa è creare un’applicazione campione Hello World – dopo la creazione iniziale, il modo in cui il progetto funziona non è diverso da qualsiasi altro progetto Java.

E così dovrebbe essere, JavaFX è solo Java. Oracle non distingue tra JavaFX e Java nella loro distribuzione, né gli IDE dovrebbero essere inclusi nei loro tipi di progetto.

Credo, in questo caso, anche se sbaglio, che sono abbastanza giusto che non importa se sbaglio.

Aggiornare

Quindi ho sbagliato abbastanza che importa 🙂

Usando Idea 13.1.4, se creo un nuovo progetto usando File | New Project | Java File | New Project | Java File | New Project | Java , ci sono le seguenti impostazioni delle risorse ( File | Settings | Compiler ):

 ?*.properties;?*.xml;?*.gif;?*.png;?*.jpeg;?*.jpg;?*.html;?*.dtd;?*.tld;?*.ftl 

Cioè, le risorse per il progetto sono appena impostate per copiare solo tipi di file specifici. Quindi è ansible modificarlo per ottenere i tipi di file aggiuntivi richiesti in alcuni progetti JavaFX aggiungendo il supporto di copia delle risorse per fxml e css; cioè, aggiungendo ;?*.fxml;?*.css .

La parte interessante è che se crei un nuovo progetto usando File | New Project | JavaFX File | New Project | JavaFX File | New Project | JavaFX , ci sono le seguenti impostazioni delle risorse:

 !?*.java;!?*.form;!?*.class;!?*.groovy;!?*.scala;!?*.flex;!?*.kt;!?*.clj 

Essenzialmente, sta copiando tutto ciò che non è un file sorgente, un tipo di set di liste di file piuttosto che un insieme di file whitelist utilizzato da altri modelli di creazione di progetti. Davvero strano … In ogni caso, i set di risorse sono configurabili dall’utente, quindi puoi modificarli come ritieni opportuno e, una volta fatto, non dovresti avere problemi (credo, ma ho sbagliato prima 😉

Suggerimento: utilizza strumenti di sviluppo di terze parti insieme al tuo IDE

Potrebbe essere meglio basare la tua build su uno strumento di terze parti come Gradle o Maven. L’idea funziona molto bene con entrambi questi strumenti di sviluppo esterni (e altri) . I vantaggi dell’utilizzo di uno strumento di terze parti sono:

  1. I progetti con questi strumenti seguono una convenzione in cui le risorse sono collocate in una specifica cartella di risorse e tutto in quella cartella viene considerato come una risorsa da impacchettare nell’output di build. Quindi c’è meno confusione lì.
  2. I progetti risultanti sono più portabili e più facili da usare da parte di altri sviluppatori che potrebbero non utilizzare Idea.
  3. I progetti possono essere costruiti facilmente grazie a sistemi di integrazione continua come Jenkins.
  4. Sia Gradle che Maven hanno plugin specifici per JavaFX che forniscono supporto aggiuntivo per il packaging di applicazioni JavaFX.

Naturalmente, lo svantaggio di usare uno strumento di costruzione di terze parti, è la complessità (e molte stranezze) nell’imparerli poiché a volte possono essere proprio la bestia. Quindi penso che sia un compromesso: piccoli progetti di esplorazione personale non ne hanno bisogno, progetti più grandi o progetti che intendete condividere con altri traggono vantaggio dall’utilizzo di tali strumenti.

Una soluzione è generare il codice usando Scene Builder e quindi integrarlo nel progetto IntelliJ esistente. Mentre dovrebbe essere ansible importarlo come un modulo, è anche ansible spostare semplicemente il codice nel punto in cui deve essere (apportando le correzioni appropriate alle istruzioni del pacchetto, ecc.). Se noti che le importazioni di javafx non sono riconosciute all’interno del tuo progetto, prova questa soluzione:

Innanzitutto assicurati di aver impostato IntelliJ in generale per JavaFX seguendo i passaggi iniziali in questo tutorial . Nota: qui sotto cito 1.8, ma questo dovrebbe funzionare con 1.7+. Consiglio 1.8+.

Secondo assicurarsi che le impostazioni del progetto esistenti consentano l’uso di javaFX

  1. Apri la struttura del progetto
  2. Fare clic su Progetto nel riquadro delle impostazioni del progetto
  3. Assicurati che Project SDK sia 1.8+.

Terzo Assicurarsi che i moduli siano configurati per un JDK che supporta JavaFX

  1. Apri la struttura del progetto
  2. Fare clic su Moduli nel riquadro delle impostazioni del progetto
  3. Assicurarsi che l’SDK del modulo in uso supporti javaFX, Anche in questo caso utilizzo JDK 1.8 ma dovrebbe funzionare con 1.7.

Inoltre, tieni presente che se hai un progetto di maven, potresti aver bisogno di mettere il tuo fxml in una posizione particolare, “/ main / resources /”. Dai un’occhiata a questo.

Questo ha funzionato per me, e spero che ti aiuti.

Ho seguito quei passaggi

  • Crea un nuovo modulo nel tuo progetto intellij esistente (A)
  • Crea un nuovo progetto JavaFx altrove
  • Copia il codice dal progetto JavaFx, cioè Controller.java,Main.java and sample.fxml nel tuo modulo nel progetto (A) sotto la directory src come in A/user-interface/src

inserisci la descrizione dell'immagine qui

  • Troverai un errore in sample.fxml poiché fa riferimento alla class controller come sample.Controller cambiandola solo a ‘Controller’. ha funzionato in questo modo (come ho rimosso la cartella del pacchetto di sample

Correggere sample.fxml

  • In (A) apri il menu delle impostazioni File | Project Structure | Modules File | Project Structure | Modules
  • Selezionare il modulo user-interface dall’elenco sul lato sinistro della finestra delle impostazioni
  • Passare alla scheda dependencies
  • Aggiungi il tuo vecchio modulo non-gui come dipendenza del modulo usando il segno verde + sul lato destro
  • Ora puoi usare le classi nel modulo non-gui, divertiti!

nota: puoi saltare la dipendenza del modulo di aggiunta e lasciare intellij farlo per te, basta digitare un nome di una class nel vecchio modulo, alt+enter (la magia della lampadina) -> add module depenency

Finestra di dipendenza del modulo

Si prega di tenere presente che la (e) cartella (e) della (e) fonte (i) deve essere impostata correttamente. Guarda lo screenshot per farti un’idea di cosa intendo ..

inserisci la descrizione dell'immagine qui