Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123

    [Java] Calendario che mostra gli appuntamenti settimanali in JTable

    Ciao a tutti,

    Ho cercato un pò tramite google ma non ho trovato nulla di soddisfacente..

    Devo scrivere un calendario in Java, ma.. devo mostrare una JTable con i giorni della settimana e le ore del giorno, in modo da poter scrivere all'interno, e quindi indicare l'appuntamento a quella certa ora e a quel dato giorno. In più, voglio far in modo che cliccando su un pulsante (come ad esempio "freccia avanti") si passi alla settimana successiva..
    Oltre a questo, aggiungere un pulsante che permetta di passare da un mese al successivo..

    Il problema è che non ho la più pallida idea di come creare un calendario ed inserire il tutto nella JTable..

    Potete dirmi come si può fare una cosa di questo tipo?

    Conosco la classe Calendar (e GregorianCalendar), ma non so potrei utilizzarle per fare una cosa di questo tipo.
    Non vi sto chiedendo del codice, ma solamente una spiegazione di come posso fare!!

    Grazie a tutti!! ^^

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

    Re: [Java] Calendario che mostra gli appuntamenti settimanali in JTable

    Originariamente inviato da Patrick Jane
    Devo scrivere un calendario in Java, ma.. devo mostrare una JTable con i giorni della settimana e le ore del giorno, in modo da poter scrivere all'interno, e quindi indicare l'appuntamento a quella certa ora e a quel dato giorno.
    Ogni colonna è un giorno della settimana e in ogni riga c'è un'ora (o tempo più ristretto)?

    Originariamente inviato da Patrick Jane
    In più, voglio far in modo che cliccando su un pulsante (come ad esempio "freccia avanti") si passi alla settimana successiva..
    Oltre a questo, aggiungere un pulsante che permetta di passare da un mese al successivo..
    Ma se la visione è "a settimana", passare ad un altro mese è vago: la prima settimana del mese? E se una settimana sta a cavallo tra due mesi, come la intendi?

    Originariamente inviato da Patrick Jane
    Il problema è che non ho la più pallida idea di come creare un calendario ed inserire il tutto nella JTable..
    JTable si basa su un table model, quindi la prima cosa da fare sarebbe stabilire se implementare un tuo table model o usare uno predefinito.
    Con questo scenario, sarebbe forse preferibile implementarne uno tuo e comunque bisogna vedere come vuoi tenere memorizzate le informazioni: hai un giorno, hai un'ora (o in generale un range di tempo), hai un testo che descrive l'appuntamento. Come vuoi legare tutto questo?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123

    Re: Re: [Java] Calendario che mostra gli appuntamenti settimanali in JTable

    Grazie per la risposta!

    Originariamente inviato da andbin
    Ogni colonna è un giorno della settimana e in ogni riga c'è un'ora (o tempo più ristretto)?
    Ogni colonna è un giorno della settimana (e il rispettivo numero del giorno). Ogni colonna, va di 15 minuti in 15 minuti sino a che la giornata lavorativa termina.

    Originariamente inviato da andbin
    Ma se la visione è "a settimana", passare ad un altro mese è vago: la prima settimana del mese? E se una settimana sta a cavallo tra due mesi, come la intendi?

    JTable si basa su un table model, quindi la prima cosa da fare sarebbe stabilire se implementare un tuo table model o usare uno predefinito.
    Con questo scenario, sarebbe forse preferibile implementarne uno tuo e comunque bisogna vedere come vuoi tenere memorizzate le informazioni: hai un giorno, hai un'ora (o in generale un range di tempo), hai un testo che descrive l'appuntamento. Come vuoi legare tutto questo?
    Eh.. questo ancora lo sto pensando. Ma bisogna valutare che io potrei prendere un appuntamento tra 1 mese, oppure tra 2 mesi..quindi devo essere in grado di poter vedere quella data e quel giorno!

    Grazie!! ^^

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

    Re: Re: Re: [Java] Calendario che mostra gli appuntamenti settimanali in JTable

    Originariamente inviato da Patrick Jane
    Ogni colonna è un giorno della settimana (e il rispettivo numero del giorno). Ogni colonna, va di 15 minuti in 15 minuti sino a che la giornata lavorativa termina.
    Sì, ok. A parte la granularità del tempo è proprio come pensavo io.

    Originariamente inviato da Patrick Jane
    Eh.. questo ancora lo sto pensando. Ma bisogna valutare che io potrei prendere un appuntamento tra 1 mese, oppure tra 2 mesi..quindi devo essere in grado di poter vedere quella data e quel giorno!
    Ok ma a parte questo, ripeto che il punto più cruciale è il "table model".

    Un table model custom potrebbe "esporre" 8 colonne (i 7 giorni per una settimana e una colonna per le ore) e N righe con orari nella prima colonna a passi di 15 minuti l'uno.
    E visto che gli appuntamenti possono essere "sparsi", altrettanto farei una gestione "sparsa", ad esempio con una mappa dove come chiave c'è un oggetto che "modella" l'insieme giorno+ore+minuti e come valore un oggetto Appuntamento o semplicemente un String (dipende da cosa basta/serve).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Un table model custom potrebbe "esporre" 8 colonne (i 7 giorni per una settimana e una colonna per le ore) e N righe con orari nella prima colonna a passi di 15 minuti l'uno.
    E visto che gli appuntamenti possono essere "sparsi", altrettanto farei una gestione "sparsa", ad esempio con una mappa dove come chiave c'è un oggetto che "modella" l'insieme giorno+ore+minuti e come valore un oggetto Appuntamento o semplicemente un String (dipende da cosa basta/serve).
    Probabilmente sarebbe meglio un oggetto Appuntamento..

    Ok, ma come posso creare questa sorta di "agenda"? Non so che componenti utilizzare! (JTable a parte).


    Grazie! ^^

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Patrick Jane
    Ok, ma come posso creare questa sorta di "agenda"? Non so che componenti utilizzare! (JTable a parte).
    All'inizio hai parlato di una tabella e di alcuni pulsanti per spostarsi di settimana/mese. Ok, questo va bene, è il minimo. Se vuoi altro dove e come non lo posso sapere io.

    Ripeto ancora che il nocciolo di tutto è 'sto table model. Potrebbe ad esempio offrire dei metodi custom del tipo:

    void visualizzaGiorno(GregorianCalendar c) (nota: assicura che venga visualizzata la settimana Lun...Dom che contiene il giorno indicato)
    void settimanaSuccessiva()
    void settimanaPrecedente()

    tanto per dire. Magari (e sarebbe logico), altri metodi per ottenere una lista degli Appuntamento ordinati per giorno/orario, ad esempio.

    Quindi va pensato bene come "modellare" le cose e quale struttura dati usare nel model. Io prima ho parlato di una mappa per fare una memorizzazione "sparsa" ma il classico array bidimensionale non è certo sbagliato, visto che numero di righe/colonne è comunque noto e fisso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da andbin
    All'inizio hai parlato di una tabella e di alcuni pulsanti per spostarsi di settimana/mese. Ok, questo va bene, è il minimo. Se vuoi altro dove e come non lo posso sapere io.

    Ripeto ancora che il nocciolo di tutto è 'sto table model. Potrebbe ad esempio offrire dei metodi custom del tipo:

    void visualizzaGiorno(GregorianCalendar c) (nota: assicura che venga visualizzata la settimana Lun...Dom che contiene il giorno indicato)
    void settimanaSuccessiva()
    void settimanaPrecedente()

    tanto per dire. Magari (e sarebbe logico), altri metodi per ottenere una lista degli Appuntamento ordinati per giorno/orario, ad esempio.

    Quindi va pensato bene come "modellare" le cose e quale struttura dati usare nel model. Io prima ho parlato di una mappa per fare una memorizzazione "sparsa" ma il classico array bidimensionale non è certo sbagliato, visto che numero di righe/colonne è comunque noto e fisso.
    Ah..preciso subito una che ho dato (sbagliando) per scontato, memorizzo ora/data dell'appuntamento ed il C.F. della persona in questione in MySQL.

    Ho letto il tutorial della Sun riguardo al TableModel, e da quello che ho capito è sufficiente creare una classe che estenda AbstractTableModel e offrire i metodi del caso (come ad esempio quelli indicati sopra da te).

    Però una cosa non mi è chiara.. come faccio a dire di mostrare la "settimana successiva"? A esempio se volessi mostrare il giorno (Lun..Dom) il numero, il mese, e l'anno da oggi, sino al fine settimana (sabato)..come faccio? Cioè, GregorianCalendar mi offre dei metodi per ottenere una serie di giorni da .. a?


    Grazie! ^^

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Patrick Jane
    Ah..preciso subito una che ho dato (sbagliando) per scontato, memorizzo ora/data dell'appuntamento ed il C.F. della persona in questione in MySQL.
    Beh, è solo questione di caricare/scaricare i dati tra il table model e il database. Tutto qui. Poi come lo si fa (e chi, nel codice, deve farlo) si può discutere ....

    Originariamente inviato da Patrick Jane
    Ho letto il tutorial della Sun riguardo al TableModel, e da quello che ho capito è sufficiente creare una classe che estenda AbstractTableModel e offrire i metodi del caso (come ad esempio quelli indicati sopra da te).
    Sì, tipicamente AbstractTableModel per un modello "custom" e la gestione della struttura dati è a carico del programmatore.
    Comunque come minimo deve avere i metodi come indicati da TableModel per "esporre" i dati e le informazioni (es. getColumnCount(), getRowCount(), getColumnName(), ecc...).
    E in più può avere tutti i metodi "speciali" che si vuole per gestire in modo appropriato l'insieme dei dati.

    Originariamente inviato da Patrick Jane
    Però una cosa non mi è chiara.. come faccio a dire di mostrare la "settimana successiva"? A esempio se volessi mostrare il giorno (Lun..Dom) il numero, il mese, e l'anno da oggi, sino al fine settimana (sabato)..come faccio? Cioè, GregorianCalendar mi offre dei metodi per ottenere una serie di giorni da .. a?
    Sono tutte cose che devi fare tu, GregorianCalendar non ha metodi diretti per ottenere una serie di giorni, o ad esempio "il primo del mese".
    Si può fare ma andando a gestire in modo appropriato i "field" che ci sono nel (Gregorian)Calendar.

    P.S. Sono indeciso se postare uno dei miei soliti esempietti, solo che in questo caso sarebbe un po' lungo, dovrei fare comunque un po' di classi, senza comunque nemmeno fare tutto quello che hai chiesto!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da andbin
    Sono tutte cose che devi fare tu, GregorianCalendar non ha metodi diretti per ottenere una serie di giorni, o ad esempio "il primo del mese".
    Si può fare ma andando a gestire in modo appropriato i "field" che ci sono nel (Gregorian)Calendar.
    ..lo immaginavo. Il mio libro parla veramente poco di GregorianCalendar e della superclasse astratta Calendar, quindi non ho la più pallida idea del come mostrare una tabella con il giorno della settimana ed il numero..



    Originariamente inviato da andbin
    P.S. Sono indeciso se postare uno dei miei soliti esempietti, solo che in questo caso sarebbe un po' lungo, dovrei fare comunque un po' di classi, senza comunque nemmeno fare tutto quello che hai chiesto!
    Uhm.. guarda, se sono molte classi, postami solo un esempio di come poter costrutire la mia JTable con i giorni della settimana..visto che questa cosa mi manda parecchio in crisi.. Poi quando avrò scritto un pò di codice, e se dovessi bloccarmi, allora chiederò al forum!

    Grazie mille! ^^

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Ciao andbin,

    Ho trovato un vecchio post su html.it (oltretutto è tuo, che strano xD), dove spieghi ad un utente come fare una sorta di calendario per i giorni lavorativi ( http://forum.html.it/forum/showthread/t-1168012.html ).
    Sulla base di questo ho qualche domanda e avrei bisogno di un tuo parere anche..

    Ho la necessita di mostrare 3 tabelle contenenti gli appuntamenti (ovviamente, in ogni tabella gli appuntamenti riguarderanno un "luogo" diverso), quindi utilizzo una JTabbedPane.
    Ciò che ho pensato è: creare questo TabbedPane, aggiungere a questi tabbed una classe che creerò io, che andrà ad estendere JPanel.
    Questa classe conterrà un oggetto di tipo MyTableModel, che è appunto la classe che estende AbstractTableModel. Questa istanza, una volta creata verrà passata al costruttore di JTable.
    Inoltre, conterrà un oggetto di GregorianCalendar per trovare i giorni, ecc.

    Sempre in questa classe, metterò a disposizione una serie di metodi, che serviranno per manipolare sia la seguente classe, che MyTableModel, consentendo quindi di chiamare i metodi di MyTableModel.

    La classe MyTableModel sarà costutita da un'array bidimensionale, un array per memorizzare i nomi delle colonne e una serie di metodi (che verranno chiamati dalla classe che estende JPanel) per consentire di ottenere/settera i dati delle celle.


    Secondo te, una struttura di questo tipo, va bene?


    Domanda: hai parlato di 8 colonne, 7 per i giorni e 1 per le ore. Ma come faccio ad aggiungere gli elementi per tutta la lunghezza della tabella? (le ore in sostanza).

    In quel topic che ho linkato sopra parli del metodo add() di Calendar (se la memoria non mi inganna). Per quanto ho capito permette di sommare alla variabile del primo parametro, il secondo valore.. Visto che io devo ottenere la settimana dal Lunedi alla Domenica (o al sabato), pensi mi convenga utilizzare add() oppure la sommo "a mano"?

    La mia idea è quella di mostrare la settimana "in corso", quindi, leggo la data odierna come ad esempio mercoledi 16, a questo punto, mostro nella prima colonna Lunedì 14, sino all'ultima colonna con Domenica 20 (scrivendo quindi le date sulla colonna).
    [Questo codice verrà chiamato dal costruttore ma sarà ovviamente disponibile in un metodo, dato che al metodo passerò una data, così da poter ottenere anche altre settimane.]

    La rimozione delle colonne e quindi la successiva aggiunte, le faccio tramite il model?

    ..che ne dici di tutto questo?


    Grazie per l'aiuto!!! ^^

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.