Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    creazione form swing dati dei parametri su file

    Salve,
    ho il seguente problema:
    La mia applicazione Java deve costruirmi dinamicamente una form secondo dei dati inseriti in un file di testo.
    esempio fileConf.txt:

    form_1->x(413); //posizione x della form
    form_1->y(17); //posizione y della form
    form_1->larghezza(896); //larghezza della form
    form_1->altezza(385); //altezza della form
    form_1->titolo("Nuova Form");

    label1->x(20); //Impostazioni della label Cognome
    label1->y(290);
    label1->larghezza(90);
    label1->altezza(20);
    label1->label("Cognome:");

    label15->x(40); //Impostazioni della label Nome
    label15->y(260);
    label15->larghezza(90);
    label15->altezza(20);
    label15->label("Nome:");
    Come faccio?
    Grazie a tutti in anticipo

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: creazione form swing dati dei parametri su file

    Originariamente inviato da sponsorweb
    La mia applicazione Java deve costruirmi dinamicamente una form secondo dei dati inseriti in un file di testo.
    Tecnicamente si può fare ma ... ci sono un po' di problematiche da affrontare.

    Innanzitutto c'è la questione del "parsing" del file. L'esempio che hai postato mi sembra abbastanza chiaro e lineare. Ma ci sono da vedere bene le specifiche esatte del formato. Ad esempio devi poter decodificare anche eventuali sequenze di "escape" nelle stringhe?? Nell'esempio c'è una stringa "Cognome:". Devono essere accettate sequenze di escape come ad esempio "ciao \"aaa\"\n"?

    Quante e quali proprietà devi poter gestire?

    Comunque in linea di massima, se ogni proprietà occupa 1 sola linea, si tratta di aprire il file, leggere "a righe", cioè una riga per volta ed estrapolare i dati verificando che il formato sia corretto.

    A parte le questioni sul file e sul formato, ci sono altre questioni più spinose. Il tipo del campo immagino che lo "deduci" dalla parte iniziale (non vedo altre info), es. label1, label15 ... sono delle JLabel mentre se avessi ad esempio textfield1, textfield2 ... allora potrebbero essere dei JTextField.

    Ma quei nomi label1 ecc.. a cosa ti devono servire??? Già perché c'è una "piccola" grossa questione. Una volta che hai fatto il parsing delle proprietà, creare il corrispondente componente AWT/Swing appropriato non è un grosso problema.
    Ma una volta che hai creato la tua interfaccia utente .... cosa te ne fai??? Dovrai pure aggiungere dei listener ai componenti, no?? E come fai se sono creati "dinamicamente" e quindi non hai dei "reference" da usare per fare riferimento ai componenti??

    In generale: come ti "riferisci" poi ai componenti?


    P.S.: giusto per curiosità. Devi proprio, cioè sei obbligato (per motivi che non posso sapere) ad usare un file in quel formato??? Non mi sembra il formato migliore .... nel senso che sicuramente si potrebbe realizzare una struttura migliore e più comoda.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    P.S.: giusto per curiosità. Devi proprio, cioè sei obbligato (per motivi che non posso sapere) ad usare un file in quel formato??? Non mi sembra il formato migliore .... nel senso che sicuramente si potrebbe realizzare una struttura migliore e più comoda.
    Cosa proporresti te allora come "struttura migliore e più comoda" per una form dinamica?
    Dinamica intendo quindi non scritta esplicitamente nel codice java di partenza, ma in un file ausiliare, in txt, xml, ecc..ecc...

    PS il file di esempio logicamente si può convertire anche in un altro formato e quindi con altra tipo di sintassi: non ho restrizioni o obbligazioni

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da sponsorweb
    Cosa proporresti te allora come "struttura migliore e più comoda" per una form dinamica?
    L'ideale sarebbe un bel file XML. Che tra l'altro esistono già dei tools come ad esempio SwiXml che fanno proprio questo ed usano appunto file XML.

    Altre strutture non XML si possono anche fare, es. cose del tipo:

    ...
    [JLabel]
    left=10
    top=20
    width=120
    ...
    text=Hello world

    [JTextField]
    left=20
    top=50
    ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Ok, allora supponiamo di non avere una struttura xml, ma abbiamo in un file generico di configurazione del codice, con dentro "più JLabel e più JTextField", quindi:
    [JTextField]
    left=60
    top=90
    ...

    [JLabel]
    left=10
    top=20
    width=120
    ...
    text=Hello world

    [JTextField]
    left=20
    top=50
    ...

    [JLabel]
    left=20
    top=50
    width=120
    ...
    text=Hello boy
    Il nostro codice Java invece come sarà per creare dinamicamente la form (non sono stati usati nel file di configurazione degli ID univoci dei vari componenti textfield, labels..ecc..ecc..)?

    Grazie sempre

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da sponsorweb
    Il nostro codice Java invece come sarà per creare dinamicamente la form (non sono stati usati nel file di configurazione degli ID univoci dei vari componenti textfield, labels..ecc..ecc..)?
    Un ID univoco comunque ci vuole. Nel file ad esempio ci potrebbe essere un ID=label1 ecc....
    Una volta creati gli oggetti e visualizzata la interfaccia, ci devi pur far qualcosa ... aggiungere listener, leggere/settare valori ecc... Quindi devi poter ottenere un reference al componente. E per farlo la soluzione più semplice è usare una Map che mappa una stringa (ID) al reference del componente.

    Ti faccio presente che tutto ciò che ho detto, a grandi linee, è assolutamente fattibile ma non in 100 righe di codice e forse nemmeno in 1000 o 2000. E dipende anche da quali/quante proprietà devi poter gestire.
    Insomma ... c'è da fare un bel po' di "lavoro" per poter innanzitutto fare il "parsing" del file e dei valori di tutti i possibili tipi di dati (es. int e simili sono abbastanza facili ma per codificare un colore, come lo metti? ci sono svariate possibilità. E un font come lo descrivi?)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Ok.
    Capisco che affrontare e sviluppare tutte le casistiche è complicato (ed è cosa che farò io con calma in un secondo momento), ma desidererei avere almeno un semplice esempio di una form con titolo e 3 JLabel, dato un file di configurazione.
    Quindi per ora niente listener, get e set, ecc...ecc...

    Te Andrea oppure qualcun altro è in grado di poterlo fare un piccolo esempio funzionante?
    Grazie

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da sponsorweb
    Te Andrea oppure qualcun altro è in grado di poterlo fare un piccolo esempio funzionante?
    Sì, sarei perfettamente in grado di realizzare un esempio ma non sarebbe una cosa breve a livello di righe di codice. Se trovo un attimo di tempo, con calma potrei provare a scrivere un esempio.

    P.S.: Fin dall'esempio iniziale si deduce che vuoi usare il posizionamento "assoluto" dei componenti. Sappi che non è il massimo ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    P.S.: Fin dall'esempio iniziale si deduce che vuoi usare il posizionamento "assoluto" dei componenti. Sappi che non è il massimo ....
    Su questo punto sono costretto.

    Resto allora comunque in attesa, anche se cercherò autonomamente di trovare una soluzione (con scarse speranze)

    Grazie sempre

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.