GUI che costruisce un oggetto - come progettare la GUI?

1

Attualmente sto scrivendo la GUI per la mia applicazione. Come ho capito in un'applicazione MVC sono i seguenti componenti per ogni funzione:

  • Dati aziendali: una gerarchia di oggetti complessa che contiene tutti i dati di cui ho bisogno
  • Codice di elaborazione: codice che funziona sui dati aziendali
  • Controller: in qualche modo gestisce la conversione tra dati di visualizzazione e dati aziendali e tutte le interazioni dell'utente con la vista
  • Visualizza dati: i dati aziendali, ma suddivisi in parti che una GUI può visualizzare - String (dai campi di testo), boolean (casella di controllo, pulsante di commutazione), Number (campo di testo formattato, casella di selezione) , Enum (radiobutton, combobox), ....
  • Visualizza: un componente fxml e una classe che estende una delle sottoclassi Parent

Informazioni aggiuntive: il codice di elaborazione utilizza anche i dati aziendali per caricare / generare altri dati (non specificati dall'utente / GUI) che devono essere salvati da qualche parte. Si può presumere che il codice di elaborazione verrà eseguito solo dopo che l'utente ha completato la configurazione di tutto tramite la GUI.

Ora sto cercando di dare un senso a tutto questo per metterli in una GUI JavaFX funzionante che si applica grosso modo ai principi della famiglia MVC. Devo affrontare i seguenti problemi:

  • Ci sono molte varianti nella famiglia MVC. Ognuno ha un'altra idea di come mettere insieme questi elementi e come dovrebbero interagire. Alcuni dicono che nessuno si conoscerà, altre varianti li uniscono, altri. Non so a quale si debba attenersi.
  • Non importa quanto mi attieni, finirò per avere un sacco di classi per ogni caratteristica (una classe per ciascuno dei punti sopra per ogni caratteristica nel caso peggiore), e un sacco di codice che maneggia solo il conversione tra loro: Perché dovrei avere una classe dati vista separata (come alcuni suggeriscono) se tutti i dati sono già in la vista?
  • Mi piacerebbe andare senza la classe vista. Poiché la vista è passiva in qualche modo, dovrebbe essere in grado di ottenere con fxml solo per questo.
  • L'ultima volta che ho utilizzato (utilizzando Swing) ho messo insieme dati aziendali e codice di elaborazione, ho inserito il controller nella vista e sostituito i dati della vista con JSON e la logica di serializzazione personalizzata in modo che la conversione tra entrambi fosse completamente automatica. Purtroppo non posso applicare questo principio a JavaFX per motivi tecnici. Dubito anche che questa sia davvero una buona soluzione, anche se ha funzionato abbastanza bene.

Cosa ti sto chiedendo:

  • Dove e come posso inserire i miei / quali dati?
  • Come gestire le classi di visualizzazione? Posso andare solo con fxml? Se sì, come posso usare questi componenti?
  • Cosa esattamente dovrebbero fare i miei controllori?
  • Come ottenere i dati della mia attività dalla GUI? Posso andare senza una classe separata per i dati della vista?

Se hai bisogno di un esempio:

  • I miei dati sono costituiti da Path (attraverso un campo di testo e un pulsante Sfoglia con finestra di dialogo selettore file), un valore Enum (tramite una casella combinata) e un oggetto personalizzato (tramite una finestra di dialogo personalizzata) - diciamo è un colore o una data.
  • La mia logica di elaborazione leggerà il file su quel percorso, caricherà il suo contenuto e ne farà qualcosa usando gli altri dati e memorizzerà il risultato in un altro file.
  • La mia vista mostra quei dati e ha due pulsanti che aprono una finestra di dialogo: quella per il percorso memorizzerà il risultato in un campo di testo vicino. Quello per l'oggetto personalizzato mostrerà il risultato in un'etichetta.
  • E non so davvero come creare qualcosa tra l'utilizzo di JavaFX e fxml. In qualche modo ho bisogno di ottenere i dati dalla GUI e renderli accessibili alla logica di business. Ci sono molte piccole funzionalità come questo esempio, a volte nidificate fino a tre livelli. Potrebbe esserci lo stesso in più posti, ma la maggior parte sono unici.
posta piegames 02.09.2017 - 13:34
fonte

0 risposte

Leggi altre domande sui tag