nel mentre che rispondevi ho modificato il m io messaggio perché mi sono accorta che mi stavo sbagliando, rileggi il messaggio modificato :-)
nel mentre che rispondevi ho modificato il m io messaggio perché mi sono accorta che mi stavo sbagliando, rileggi il messaggio modificato :-)
Stavo anche pensando, tutto il blocco try servirebbe solo nella classe principale o sbaglio? Cioè una volta che il programma è partito i controlli del try li ha già fatti, perciò è (credo) inutile lasciarli anche nelle altre classi, giusto?
Che intendi di preciso?C'e' una cosa che mi perplime: in NetBeans mentre creo le finestre col designer nella preview le vedo in un modo diverso da come poi sono effettivamente quando eseguo il file.
Io premetto di non essere un assiduo utilizzatore di NetBeans comunque.
Per dirtelo dovrei vedere il codice completo. :PStavo anche pensando, tutto il blocco try servirebbe solo nella classe principale o sbaglio? Cioè una volta che il programma è partito i controlli del try li ha già fatti, perciò è (credo) inutile lasciarli anche nelle altre classi, giusto?
Se ci sono dei try/catch è perchè vengono effettuate alcune operazioni che potrebbero dar luogo ad eccezioni, come manipolazione di file o in generale I/O, ma anche operazioni di altro tipo insomma.
Di nuovo mi rispondo da sola, almeno sul blocco try, è necessario perché se lo tolgo non mi carica più Nimbus. Riguardo la prima domanda, never mind! Piuttosto avrei altre curiosità.
Ho una maschera per l'inserimento di alcuni dati che andranno salvati nel database non appena l'utente clicca il pulsante 'Salva'.
Come posso fare in modo che un pulsante diventi cliccabile solo non appena l'utente comincia a inserire i dati nei jtexfield? Es. il pulsante Salva si deve 'attivare' solo se l'utente comincia a riempire un JTextfield.
Altra domanda: visto come ho gestito sopra il pulsante impostazioni, cioè gli ho solo aggiunto l'evento di chiamata della nuova maschera, cosa succede alla maschera attuale, cioè StartPanel? Viene solo nascosta?
Grazie.
Ovviamente se tigli il contenuto del try non caricherà Nimbus non essendoci più l'istruzione.
Per rendere clickabile il pulsante Salva solo se viene inserito del testo devi operare sul Document del JTextField. In pratica crei una classe che implementa DocumentListener ed i relativi metodi ( http://docs.oracle.com/javase/7/docs...tListener.html ) e poi fai questo sul campo di tuo interesse:
Vista la tua applicazione (rendere il bottone clickabile) ti consiglio di dichiarare questa classe in quella dove hai il JTextField di interesse, dichiarandola private.codice:textField.getDocument().addDocumentListener(new MyDocumentListener());
In questo modo da questa classe puoi accedere al bottone della precedente e renderlo clickabile.codice:private class MyDocumentListener implements DocumentListener {
Se parli del modo in cui crei la finestra delle impostazioni, vedrai sotto la finestra attuale StartPanel. Se vuoi nasconderla chiama setVisible(false) su StartPanel. Ovviamente poi dovrai gestire il click sulla X della finestra Impostazioni in modo che alla sua chiusura la precedente ricompaia.
Se ho capito male ti chiedo scusa e ti chiedo anche di rispiegare che hai bisogno.![]()
Ok grazie, però nel frattempo ho cambiato idea su come deve essere questa schermata d'inserimento dati (mi riferisco alla domanda sul pulsante salva).
Ho pensato di fare così: all'apertura della maschera per inserire i dati ho un campo nomeMenu che visualizza l'ultimo dato precedentemente inserito (se esiste) pescato dal database, due pulsanti laterali con delle frecce per scorrere avanti e indietro i record del database, alla pressione dei quali deve cambiare il record che viene visualizzato, un pulsante che attiva la modifica del record esistente (quindi se lo premo i campi da grigi diventano bianchi e possono essere modificati) e uno per l'inserimento di un nuovo record che quindi 'pulisce' i campi dai dati che si stavano visualizzando e mi permette di inserirne di nuovi.
Chiaramente non ho idea di come fare tutto questo... Mi potete dare qualche suggerimento sui componenti da utilizzare?
Grazie mille davvero.
Ti posso anche dire i componenti, ma ti conviene seguire il tutorial della Oracle, altrimenti non te ne farai molto.
I componenti a quanto hai descritto sono:
- JTextField: nomeMenu
- JButton: freccia destra, freccia sinistra, modifica, nuovo record
Non so che dati devi inserire, ma per ogni dato da inserire ti servirà un JTextField.
Se vuoi altre info spiega meglio come deve essere l'interfaccia, e quali sono tutti i dati da inserire/mostrare, altrimenti risulta complicato aiutarti.![]()
Ciao, sì fin lì ci arrivavo
Comunque ho cambiato nuovamente idea su come strutturare la maschera, e alla fine ho fatto come segue.
Ho una jList e un jTextField dove inserire la descrizione di un elemento da cercare che si trova nella lista (nel database) tramite la categoria (menu), a destra di questa ci sono i campi dove inserire i dati, ovvero il nuovo menu e i prodotti che ne fanno parte, che verranno visualizzati in basso in un'altra jList man mano che vengono salvati e aggiunti tramite apposito pulsante.
In pratica devo fare in modo che:
- nella jList compaiano i menu già inseriti nel db e cliccando sopra uno di essi nei campi a destra devono comparire i vari valori (ovvero menu, prodotto, prezzo) per poterli modificare (aprendo la form in modalità modifica tramite apposito pulsante)
- sia possibile cercare un menu e quindi inserendo il nome del menu nel jTextField nella jList mi deve visualizzare solo quelli rispondenti alla descrizione inserita (ovvero nella jList dev'esserci il risultato di una query, immagino)
- nella form d'inserimento dati, premendo su nuovo menu si devono attivare i vari campi in modalità inserimento e ogni volta che ho aggiunto un prodotto e clicco su 'aggiungi' esso dev'essere inserito nel database e visualizzato nella jList sotto.
Ho creato tutta la grafica relativa, ma adesso devo inserire tutte le azioni e non so da che parte cominciare...
Spero di essermi spiegata. Se serve posso postare uno screenshot della maschera così forse ci capiamo meglio.
Grazie infinite.
L'interfaccia grafica sarebbe l'ultima cosa da progettare, prima si dovrebbe scrivere tutto il codice della tua applicazione. I componenti grafici dovrebbero poi richiamare il codice che hai scritto; in pratica la GUI dovrebbe solo esporre le cose, e si dovrebbe riuscire a cambiare la GUI senza toccare il resto del codice.
Si se postassi uno screen sarebbe molto più chiaro.
Comunque devi settare dei Listener sui vari componenti. Sul JList puoi settare ListSelectionListener: http://docs.oracle.com/javase/tutori...nlistener.html
Per quanto riguarda il JTextField di ricerca dovrai avere al suo fianco un bottone tipo "Cerca". La query in questo caso non è complicata, ti basterà sfruttare il carattere jolly del db (nel caso di MySQL se non ricordo male è %, ma non ne sono certo) per comprendere tutte le parole che iniziano o finiscono in quel modo. Se nel campo di ricerca viene inserito ad esempio "m" la query viene fatta come "m%" e cerca quindi tutte le parole con iniziale "m".
L'altra domanda è: sai in che modo leggere/scrivere nel db?
Potrei farti anche un esempio pratico basandomi sulla tua GUI poi.
Hai ragione ma sinceramente per le mie competenze su java è stato più semplice così.
Ecco la maschera:
tbm.jpg
Andando per gradi, adesso vorrei capire come fare in modo che all'apertura della maschera i campi per l'inserimento dei dati (eccetto il cerca) siano grigi finché non si preme il tasto 'nuovo' che abilita quindi l'inserimento del testo nei vari campi.
Per adesso ho capito come fare in modo che non siano editabili finché non premo 'nuovo'.
Molto semplicemente li metto tutti in setEditable(false) e ho registrato un'action al pulsante nuovo che cambia il parametro in true. Spero vada bene.
EDIT: nel frattempo ho scoperto che è molto più semplice di come stavo pensando, ho messo un setEnabled(false) e poi true alla pressione di 'nuovo'.
Concentriamoci sulle cose più complicate, ovvero come faccio in modo che i dati vengano salvati nel database alla pressione dei pulsanti di salvataggio?
Per la lettura/scrittura nel db ho delle classi d'esempio che ci fece il prof ma non sono molto chiare anche perché non le ha spiegate affatto, perciò se puoi farmi qualche esempio su quanto sopra, te ne sono grata.
Le query SQL non sono un probelma, nel senso che le conosco quel tanto che basta. M'interessa l'interfacciamento con java.
Grazie!!
Ultima modifica di Jamie04; 04-12-2013 a 16:44