Hallo!
In diesem kleinen Beispiel habe ich eine Tabelle die mit einer Datenbank befüllt werden soll und auf Veränderungen in ein den Zellen reagieren soll. Diese Veränderungen sollen in einer ArrayList gespeichert werden um sie dann später wieder der Datenbank zurück zu führen. Nur wird statt einem die ArrayLIst immer um zwei Elemente erhöht
Wobei der Datentyp SqlType eine Kalsse ist die wie folgt aussieht:
Wieso wird die Größe der ArrayList immer um zwei statt um eins erhöht?
Gruß niesel
In diesem kleinen Beispiel habe ich eine Tabelle die mit einer Datenbank befüllt werden soll und auf Veränderungen in ein den Zellen reagieren soll. Diese Veränderungen sollen in einer ArrayList gespeichert werden um sie dann später wieder der Datenbank zurück zu führen. Nur wird statt einem die ArrayLIst immer um zwei Elemente erhöht
Java:
import java.awt.*;
import javax.swing.event.*;
import javax.swing.table.*;
import javax.swing.*;
import java.util.ArrayList;
public class Main extends JFrame implements TableModelListener {
private JTable table;
private MyDBTableModel model;
private JLabel gesamt;
private JButton button;
private SqlType sqlt = new SqlType();
private ArrayList<SqlType> sqllist = new ArrayList<SqlType>();
public Main() {
super("Tabletest");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
model = new MyDBTableModel();
model.addTableModelListener(this);
table = new JTable(model);
table.getModel().addTableModelListener(this);
table.setPreferredScrollableViewportSize(
new Dimension(400, 80));
c.add(new JScrollPane(table));
button = new JButton("OK");
button.setEnabled(false);
c.add(button, BorderLayout.SOUTH);
pack();
setVisible(true);
System.out.println("Arraylistgroesse im Kosntrucktor=" + sqllist.size());//beim start 0
}//Konstrukor
public void tableChanged(TableModelEvent e) {
//gesamt.setText("Tabelle wurde verändnert");
int row = table.getEditingRow();
int column = table.getEditingColumn();
String spaltenname = table.getColumnName(column);
System.out.println("SelectedRow=" + row + "Selected Column=" + column);
TableModel model2 = (TableModel) e.getSource();
String columnName = model2.getColumnName(column);
Object data = model2.getValueAt(row, column);
int id = (Integer) model2.getValueAt(row, 0);
System.out.println("Data" + data);
System.out.println("Spaltenname=" + spaltenname);
sqlt.setAttribName(columnName);
sqlt.setData(data);
sqlt.setId(id);//muss noch ermittelt werden
sqllist.add(sqlt);
System.out.println("Arraylistgroesse=" + sqllist.size());//nach einerZelle = 2
button.setEnabled(true);
}//tableChanged
public static void main(String[] args) {
// TODO code application logic here
new Main();
}
}
Java:
package mydbtable;
public class SqlType {
private String attribName;
private Object data;
private int id;
public SqlType() {
}
public void setId(int id) {
this.id=id;
}
public void setData(Object data) {
this.data=data;
}
public void setAttribName(String attribName) {
this.attribName=attribName;
}
public int getId() {
return this.id;
}
public Object getData() {
return this.data;
}
public String getAttribName() {
return this.attribName;
}
}
Gruß niesel