questa è la classe che e stavo provando per capire come procede:
codice:
import java.awt.Frame;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class Table {
public JTable tabella;
public JScrollPane scroll;
public JFrame finestra;
DefaultTableModel model = new DefaultTableModel();
public Table(){
tabella = new JTable (model);
model.addColumn("nome");
model.addColumn("cognome");
model.addColumn("telefono");
model.addColumn("mail");
scroll=new JScrollPane(tabella);
finestra = new JFrame ();
finestra.add(scroll);
finestra.setVisible(true);
finestra.setBounds(50, 50, 300, 300);
tabella.getModel().addTableModelListener(new MyTableModel(tabella, this));
//valori di prova
Vector<String> row = new Vector<String>();
row.addElement("luca");
row.addElement("matta");
row.addElement("35345325");
row.addElement("luca@info.it");
model.addRow(row);
String vettore = model.getDataVector().toString();
System.out.println(vettore);
}
public static void main(String[] args) {
Table a = new Table();
}
}
questo il table model :
codice:
import java.awt.Color;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
public class MyTableModel implements TableModelListener{
JTable table;
Table prova;
MyTableModel(JTable table,Table prova) {
this.table = table;
this.prova=prova;
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());
Vector num = prova.model.getDataVector();
System.out.println(num);
try {
Connection conn = DriverManager.getConnection("jdbc:sqlite:agenda.db");
PreparedStatement prep = conn.prepareStatement("INSERT INTO agenda(data) VALUES(?);");
prep.setString(1,num.toString());
prep.execute();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
break;
case TableModelEvent.DELETE:
for (int i = firstRow; i <= lastRow; i++) {
System.out.println("delete");
}
break;
}
}
}
non ho capito la seconda domanda