Hallo,
ich habe folgendes Problem, ich will, das meine Tabelle nur Editierbar wird, wenn darauf doppelt geklickt wird,
dass funktioniert bei mir ja auch, aber ich bekomme nicht raus, aus welcher Spalte der Inhalt verändert wurde.
Ich glaube es liegt an meinem DefaultTableModel, find aber leider nicht raus, was es sein kann.
Hier einmal der Code vom DefaultTableModel:
und hier noch zwei Code-snipsel von meiner JFrame Klasse, in der die Tabelle erstellt wird:
Zuerst die funktion, in der die Tabelle erstellt wird:
und hier die Funktion, wo ausgelesen werden soll, welche Zeile und Spalte verändert wurde
für row bekomme ich immer nur 0 und für den column immer -1 und ich bekomme nicht heraus warum.
Ich danke schon mal im voraus.
ich habe folgendes Problem, ich will, das meine Tabelle nur Editierbar wird, wenn darauf doppelt geklickt wird,
dass funktioniert bei mir ja auch, aber ich bekomme nicht raus, aus welcher Spalte der Inhalt verändert wurde.
Ich glaube es liegt an meinem DefaultTableModel, find aber leider nicht raus, was es sein kann.
Hier einmal der Code vom DefaultTableModel:
Code:
;
import javax.swing.table.DefaultTableModel;
public class ProviTableModel extends DefaultTableModel {
/**
*
*/
private static final long serialVersionUID = 1L;
int laenge = 0;
int laenge2 = 0;
String[][] data = new String[0][0];
String[] data2 = new String[0];
boolean isEditAble = true;
public ProviTableModel(){
}
public ProviTableModel(String[] ueberschrift, String[][] zeilen){
laenge = ueberschrift.length;
laenge2 = zeilen.length;
data2=ueberschrift;
data = zeilen;
}
public boolean isCellEditable(int a, int b){
return isEditAble;
}
public int getColumnCount(){
return data2.length;
//return laenge;
}
public int getRowCount(){
//return data.length;
return laenge2;
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public void setValueAt(Object o, int r, int c){
data[r][c] = (String)o;
this.fireTableDataChanged();
}
public void setEditAble(boolean edit){
isEditAble = edit;
}
}
und hier noch zwei Code-snipsel von meiner JFrame Klasse, in der die Tabelle erstellt wird:
Zuerst die funktion, in der die Tabelle erstellt wird:
Code:
private void createStufe(){
String[] col = {"Datum","Stufe","Nr"};
String[][] row = {{"test1","test2","test5"},{"test3","test4","test6"}};
jPanelStufe.setBorder(BorderFactory.createTitledBorder("Stufe"));
tableModelStufe = new ProviTableModel(col,row);
jTableStufe = new JTable(tableModelStufe);
jScrollPaneStufe = new JScrollPane(jTableStufe);
jPanelStufe.setBounds(300, 160, 250, 120);
jScrollPaneStufe.setBounds(15, 20, 230, 90);
jPanelStufe.add(jScrollPaneStufe);
jPanelStufe.setLayout(null);
jPopMenuItemNeu.setText("neu");
jPopMenuItemDel.setText("löschen");
jPopMenuItemEdit.setText("editieren");
jPopMenuStufe.add(jPopMenuItemNeu);
jPopMenuStufe.add(jPopMenuItemDel);
jPopMenuStufe.add(jPopMenuItemEdit);
jPopMenuStufe.addSeparator();
jScrollPaneStufe.add(jPopMenuStufe);
jPanelStufe.add(jPopMenuStufe);
getContentPane().add(jPanelStufe);
jTableStufe.addKeyListener(this);
tableModelStufe.addTableModelListener(this);
jTableStufe.addMouseListener(this);
jScrollPaneStufe.addMouseListener(this);
}
und hier die Funktion, wo ausgelesen werden soll, welche Zeile und Spalte verändert wurde
Code:
public void tableChanged(TableModelEvent e) {
if(e.getSource() == tableModelStufe){
int row = e.getFirstRow();
int column = e.getColumn();
System.out.println(row);
}
}
für row bekomme ich immer nur 0 und für den column immer -1 und ich bekomme nicht heraus warum.
Ich danke schon mal im voraus.