ich habe mich soweit vorgekämpft, dass ich in einer spalte comboboxen habe und die anderen editieren kann und das auch ins model übernommen wird
nur auf die combobox wird nicht reagiert
der "editor"
das model
ich hoffe mir kann jemand erklären wie ich die verbindung herstellen muss
nur auf die combobox wird nicht reagiert
der "editor"
Code:
import java.awt.Component;
import java.util.EventObject;
import javax.swing.AbstractCellEditor;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.event.CellEditorListener;
import javax.swing.event.ChangeEvent;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
public class ComboCellEditor extends AbstractCellEditor implements TableCellEditor{
private static final long serialVersionUID = 4919078372264293695L;
public Object getCellEditorValue () {
return combo.getSelectedItem();
}
private DefaultTableModel model = new DefaultTableModel();
public ComboCellEditor(DefaultTableModel model){
this.model = model;
}
public Component getTableCellEditorComponent (JTable table, Object value, boolean isSelected, int row, int column) {
if(column == 4)
{
combo.setSelectedItem(value);
return combo;
}
return lb1;
}
public boolean isCellEditable(int row, int column ) {
if(column == 0){
return false;
}
else
return true;
}
private JComboBox combo = new JComboBox(new String[] {"m", "w"});
private JLabel lb1 = new JLabel("1");
public void addCellEditorListener(CellEditorListener arg0) {
// TODO Auto-generated method stub
}
public boolean isCellEditable(EventObject arg0) {
// TODO Auto-generated method stub
return true;
}
public void removeCellEditorListener(CellEditorListener arg0) {
// TODO Auto-generated method stub
}
public boolean shouldSelectCell(EventObject arg0) {
// TODO Auto-generated method stub
return false;
}
public void cancelCellEditing() {
fireEditingCanceled();
}
public boolean stopCellEditing() {
fireEditingStopped();
return true;
}
}
das model
Code:
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.JComboBox;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
public class SampleTableModel extends DefaultTableModel{
private static final long serialVersionUID = 1L;
public SampleTableModel(){
}
public void loadData(TConnection con) {
addColumn("SchülerID");
addColumn("Name");
addColumn("Passwort");
addColumn("Klasse");
addColumn("gender");
Vector v = new Vector(5,1);
Object ID = null;
for (int i = 0; i < con.getAllStudentIDs().size(); i++) {
ID = con.getAllStudentIDs().elementAt(i);
v.add(ID);
v.addElement(con.getStudentName(Integer.parseInt((String) ID)));
v.addElement(con.getPassword(Integer.parseInt((String) ID)));
v.addElement(con.getClass(Integer.parseInt((String) ID)));
v.addElement(con.getGender(con.getGenderIDFromStudent(Integer.parseInt((String) ID))));
al.add(v);
v = new Vector(5,1);
isCellEditable(i, 0);
}
for (int i = 0; i < al.size(); i++) {
addRow((Vector) al.get(i));
}
}
public void loadData(TConnection con, int year) {
addColumn("SchülerID");
addColumn("Name");
addColumn("Passwort");
addColumn("Klasse");
addColumn("gender");
Vector v = new Vector(5,1);
Object ID = null;
for (int i = 0; i < con.getAllStudentsFromYear(year).size(); i++) {
ID = con.getAllStudentsFromYear(year).elementAt(i);
v.add(ID);
v.addElement(con.getStudentName(Integer.parseInt((String) ID)));
v.addElement(con.getPassword(Integer.parseInt((String) ID)));
v.addElement(con.getClass(Integer.parseInt((String) ID)));
v.addElement(con.getGender(con.getGenderIDFromStudent(Integer.parseInt((String) ID))));
al.add(v);
v = new Vector(5,1);
}
for (int i = 0; i < al.size(); i++) {
addRow((Vector) al.get(i));
}
}
public void writeData(TConnection con,TableModel model){
this.con = con;
for (int i = 0; i < model.getRowCount(); i++) {
con.setStudentName(Integer.parseInt((String) model.getValueAt(i, 0)), (String)model.getValueAt(i,1));
con.setPassword(Integer.parseInt((String) model.getValueAt(i, 0)), (String)model.getValueAt(i,2));
con.setClass(Integer.parseInt((String) model.getValueAt(i, 0)), (String)model.getValueAt(i,3));
}
}
public boolean isCellEditable(int row, int column ) {
if(column == 0){
return false;
}
else
return true;
}
public Class getColumnClass(int columnIndex) {
if( columnIndex == 4 )
return JComboBox.class;
else
return String.class;
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
if( columnIndex == 4 )
System.out.println("combo"); // das müsste ich ja mindestens in der konsole sehen
else
System.out.println("dasdas");
}
private ArrayList al = new ArrayList();
private TConnection con = new TConnection();
}
ich hoffe mir kann jemand erklären wie ich die verbindung herstellen muss