chiedo scusa per i post multipli,![]()
chiedo scusa per i post multipli,![]()
Scusa hai definito la struttura del DB?
non ho capito qual'è il tuo problema....
I computer sono incredibilmente veloci, accurati e stupidi.
Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
Insieme sono una potenza che supera l'immaginazione.
A.Einstein
il mio problema è salvare tutti i dati della tabella in sqlite
si il db l'ho creato ma dovrò modificare la tabella in quanto quella che ho fatto ha le colonne: data,ora,colonna e appuntamento, mentre se salvassi direttamente il vettore avrei bisogno solo di data e vettore![]()
in pratica in base al giorno selezionato dovrà caricarmi il vettore con gli appuntamenti di quel giorno e aggiornare ogni volta che scrivo un nuovo appuntamento in tebella,non so se mi sono spiegato bene![]()
Per la visualizzazione:
Ti carichi tutti gli appuntamenti dal DB te li memorizzi in un Vector o in una LinkedList o dove ti pare.
Quando vai a creare la tabella ti richiami la classe del DB (in quella classe ci sarà un metodo che ti memorizza come detto prima tutti gli appuntamenti) e poi con dei for te li carichi nella JTable.
Per l'update:
Non appena modifichi la cella fai partire un evento che fà l'update del dato stesso in tabella.
Ciao
P.S. ma si può creare una cosa del genere?
puoi realizzare la stessa cosa con un piccolo script invece di instanziare centinaia di oggetti...codice:Object[] ora1 = {"8:00"}; Object[] ora2 = {"8:15"}; ..... Object[] ora48 = {"20:00"}; model.addRow(ora1); model.addRow(ora2); ..... model.addRow(ora48);
io sono riuscito con un solo object.
I computer sono incredibilmente veloci, accurati e stupidi.
Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
Insieme sono una potenza che supera l'immaginazione.
A.Einstein
che fosse un modo stupido di fare lo intuivo![]()
grazie per la risposta,ora ci studio un pò su![]()
mhmh l'unica cosa che mi viene in mente è utilizzare un ciclo for![]()
ma con l'evidente problema che non si ferma ai 60 minuticodice:double apertura; int chiusura=20; for (apertura=8;apertura<chiusura;apertura=apertura+0.15) { System.out.println(Math.round( apertura * Math.pow( 10, 2 ) )/Math.pow( 10, 2 )); };![]()
te lo passo domattina...l'ho realizzato con la classe GregorianCalendar.
Notte
![]()
I computer sono incredibilmente veloci, accurati e stupidi.
Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
Insieme sono una potenza che supera l'immaginazione.
A.Einstein
la parte di per la stampa degli orari nella tabella è la seguente
Questo è uno dei metodi da seguire ma può essere anche migliorato o fatto in un altro modo.codice:totaleorelavoro=12; long quindiciminuti=900000L; Object[] generalTime=new Object[1]; GregorianCalendar gcalendar = new GregorianCalendar(); //qui di seguito puoi gestirti la data che tenti di aprire dal calendar e sostituirla al posto di //year, month and day e passare direttamente i valori interi alla funzione di gcalendar. gcalendar.set(gcalendar.get(Calendar.YEAR), gcalendar.get(Calendar.MONTH) , gcalendar.get(Calendar.DAY_OF_MONTH), 8, 0, 0); String fmt_time= ""; for(int i=0; i<(totaleorelavoro*4)+1; i++){ try{ fmt_time= format(gcalendar); }catch(ParseException pex){ System.out.println("errore"); pex.printStackTrace(); System.exit(-1); } generalTime[0]=fmt_time; model.addRow(generalTime); gcalendar.setTimeInMillis(gcalendar.getTimeInMillis()+quindiciminuti); } //il metodo format public String format(GregorianCalendar date) throws ParseException{ SimpleDateFormat sdft = new SimpleDateFormat("HH:mm"); sdft.setCalendar(date); return sdft.format(date.getTime()); }
inoltre non hai settato nemmeno un JScrollPane per leggere tutta la tabella.
ho migliorato un pò la tua classe.
a questo punto devi occuparti sulla parte di caricamento tabella da DB e eventi JTable, ma prima di tutto devi crearti la tabella sul tuo DB.codice:import java.sql.*; import java.util.Calendar; import java.util.Vector; import java.util.GregorianCalendar; import java.text.SimpleDateFormat; import java.awt.event.*; import javax.swing.*; import javax.swing.border.Border; import javax.swing.table.DefaultTableModel; import java.text.ParseException; public class ProvaTabella extends JFrame{ private JTable tabella; private JScrollPane pane; private int orainizio=8; private int orafine=20; private int totaleorelavoro; public ProvaTabella(){ super("User Table"); DefaultTableModel model = new DefaultTableModel(); tabella = new JTable (model); model.addColumn(" / "); model.addColumn("lavorante1"); model.addColumn("lavorante2"); model.addColumn("lavorante3"); model.addColumn("lavorante4"); model.addColumn("lavorante5"); totaleorelavoro=12; long quindiciminuti=900000L; Object[] generalTime=new Object[1]; GregorianCalendar gcalendar = new GregorianCalendar(); gcalendar.set(gcalendar.get(Calendar.YEAR), gcalendar.get(Calendar.MONTH) , gcalendar.get(Calendar.DAY_OF_MONTH), 8, 0, 0); String fmt_time= ""; for(int i=0; i<(totaleorelavoro*4)+1; i++){ try{ fmt_time= format(gcalendar); }catch(java.text.ParseException pex){ System.out.println("errore"); pex.printStackTrace(); System.exit(-1); } generalTime[0]=fmt_time; model.addRow(generalTime); gcalendar.setTimeInMillis(gcalendar.getTimeInMillis()+quindiciminuti); } pane=new JScrollPane(tabella); add(pane); setBounds(50, 50, 500, 500); setVisible(true); model.fireTableRowsUpdated(0, model.getRowCount()); CreazioneDb data1 = new CreazioneDb(); Vector data = model.getDataVector(); System.out.println(data); // try { // // Connection conn = DriverManager.getConnection("jdbc:sqlite:gestione.db"); // // PreparedStatement prep = conn.prepareStatement("INSERT INTO agenda(data) VALUES(?)"); // // prep.setString(1, data); // // prep.execute(); // // } catch (SQLException e1) { // // TODO Auto-generated catch block // e1.printStackTrace(); // } // } } public String format(GregorianCalendar date) throws java.text.ParseException{ SimpleDateFormat sdft = new SimpleDateFormat("HH:mm"); sdft.setCalendar(date); return sdft.format(date.getTime()); } public static void main(String[] args) { ProvaTabella a = new ProvaTabella(); a.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); a.setBounds(50, 50, 500, 500); a.setVisible(true); } }
Ciao![]()
I computer sono incredibilmente veloci, accurati e stupidi.
Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
Insieme sono una potenza che supera l'immaginazione.
A.Einstein
grazie![]()
![]()
domani provo e guardo bene come fatto![]()
![]()
non ci avevo proprio pensato alla classe calendar![]()
funziona perfettamente e riesco a salvare i dati,devo studiare il modo per far sentire la modifica delle celle ed è a posto,però ho un problema,quando vado ad integrare il codice della tabella nel mio programmino mi da errore(ovviamente rinomino le varie parti)
codice://creo il pannello di AGENDA-------------------------------------------------------------- final JPanel mfagenda = new JPanel (); mfagenda.add(calendario); //------------------------------- //parte della tabella dell'agenda //------------------------------- JTable tabellaag; JScrollPane pane; int orainizio=8; int orafine=20; int totaleorelavoro; DefaultTableModel agmodel = new DefaultTableModel(); tabellaag = new JTable (agmodel); agmodel.addColumn(" / "); agmodel.addColumn("lavorante1"); agmodel.addColumn("lavorante2"); agmodel.addColumn("lavorante3"); agmodel.addColumn("lavorante4"); agmodel.addColumn("lavorante5"); totaleorelavoro=12; long quindiciminuti=900000L; Object[] generalTime=new Object[1]; GregorianCalendar gcalendar = new GregorianCalendar(); //qui di seguito puoi gestirti la data che tenti di aprire dal calendar e sostituirla //al posto di //year, month and day e passare direttamente i valori interi alla funzione di gcalendar. gcalendar.set(gcalendar.get(Calendar.YEAR), gcalendar.get(Calendar.MONTH) , gcalendar.get(Calendar.DAY_OF_MONTH), 8, 0, 0); String fmt_time= ""; for(int i=0; i<(totaleorelavoro*4)+1; i++){ try{ fmt_time= format(gcalendar); }catch(java.text.ParseException pex){ System.out.println("errore"); pex.printStackTrace(); System.exit(-1); } generalTime[0]=fmt_time; agmodel.addRow(generalTime); gcalendar.setTimeInMillis(gcalendar.getTimeInMillis()+quindiciminuti); } pane=new JScrollPane(tabellaag); agmodel.fireTableRowsUpdated(0, agmodel.getRowCount()); Vector data = agmodel.getDataVector(); String vettore = data.toString(); agmodel.fireTableRowsUpdated(0, agmodel.getRowCount()); System.out.println(vettore); // try { // // Connection conn = DriverManager.getConnection("jdbc:sqlite:agenda.db"); // // PreparedStatement prep = conn.prepareStatement("INSERT INTO agenda(data) VALUES(?);"); // // prep.setString(1,vettore); // // prep.execute(); // // } catch (SQLException e1) { // // TODO Auto-generated catch block // e1.printStackTrace(); // } String format(GregorianCalendar date) throws java.text.ParseException{ SimpleDateFormat sdft = new SimpleDateFormat("HH:mm"); sdft.setCalendar(date); return sdft.format(date.getTime()); } //------------------------------ //fine parte tabella agenda //----------------------------- pane.setBounds(10, 10, 500, 500); final JSplitPane AGENDA = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,pane, mfagenda); AGENDA.setOneTouchExpandable(false); AGENDA.setOpaque(true); AGENDA.setDividerLocation(500);
la riga incriminata è questa:
gli errori:codice:String format(GregorianCalendar date) throws java.text.ParseException{
Multiple markers at this line
- Syntax error, insert ";" to complete Statement
- Syntax error, insert "AssignmentOperator Expression" to complete
Assignment
- Syntax error, insert ";" to complete LocalVariableDeclarationStatement
- Syntax error on token "(", ; expected
ho inoltre provato a "sentire" le modifiche tramite:
ma non da segni di vitacodice:agmodel.fireTableRowsUpdated(0, agmodel.getRowCount());![]()
questa è la classe tablemodel:
codice:import javax.swing.JTable; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; //sente tutto quello ke si fa sulla cella e capisce quale azione è stata svolta public class MyTableModel implements TableModelListener{ JTable table; MyTableModel(JTable table) { this.table = table; table.setRowSelectionAllowed(false); table.setColumnSelectionAllowed(false); table.setCellSelectionEnabled(false); } public void tableChanged(TableModelEvent e) { int firstRow = e.getFirstRow(); int lastRow = e.getLastRow(); int index = e.getColumn(); switch (e.getType()) { case TableModelEvent.INSERT: for (int i = firstRow; i <= lastRow; i++) { System.out.println("inserito"); } break; case TableModelEvent.UPDATE: if (firstRow == TableModelEvent.HEADER_ROW) { if (index == TableModelEvent.ALL_COLUMNS) { System.out.println("A column was added"); } else { System.out.println("aggiornata"); System.out.println(index + "in header changed"); } } else { for (int i = firstRow; i <= lastRow; i++) { if (index == TableModelEvent.ALL_COLUMNS) { System.out.println("All columns have changed"); break; } else { System.out.println(index); System.out.println(table.getSelectedRow() + table.getSelectedColumn()); } } } break; case TableModelEvent.DELETE: for (int i = firstRow; i <= lastRow; i++) { System.out.println("delete"); } break; } } }