Hallo,
ich möchte alle Zellen einer Spalte mit jeweils einer JComboBox darstellen.
In Anlehnung an das Sun-Tutorial über JTable und diverse andere Informationsquellen hab ich folgenden Code probiert:
Weiterhin hab ich eine Klasse, die von JTable ableitet und die obige Klasse als TableModel benutzt.
Mit der Methode "setUpComboBox()" - siehe Code oben möchte ich bewirken, dass alle Zellen der letzten Spalte außer der Spaltenüberschrift mit einer JComboBox dargestllt werden.
Aber genau das funktioniert nicht. Die Zellen werden ganz normal - ohne JComboBox dargestellt.
Und ich weiß nicht woran es liegen könnte.
Gruß, Ralf.
ich möchte alle Zellen einer Spalte mit jeweils einer JComboBox darstellen.
In Anlehnung an das Sun-Tutorial über JTable und diverse andere Informationsquellen hab ich folgenden Code probiert:
Code:
import java.util.*;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JTable;
import javax.swing.table.*;
public class EventTableModel extends AbstractTableModel
{
private Event[] events;
private String[] eventvalues;
private TableColumn[] tcolumns;
public EventTableModel()
{
//super();
events=new Event[1];
eventvalues=
new String[]{"Name","Datum","Ort","Uhrzeit","Status"};
//Spalten setzten
tcolumns=new TableColumn[eventvalues.length];
for(int i=0;i<eventvalues.length; i++)
{
tcolumns[i]=new TableColumn();
}
setUpComoBox();
}
public void setUpComoBox()
{
JComboBox combobox=new JComboBox();
combobox.addItem("geplant");
combobox.addItem("gecancelt");
combobox.addItem("hatstattgefunden");
DefaultCellEditor ce=new DefaultCellEditor(combobox);
tcolumns[4].setCellEditor(ce);
System.out.println(tcolumns[4].getCellEditor());
}
public void setValueAt(Object value, int row, int col)
{
switch(col)
{
case 0: events[row].setName((String)value);
case 1: events[row].setDate((String)value);
case 2: events[row].setOrt((String)value);
case 3: events[row].setUhrzeit((String)value);
case 4: events[row].setStatus((String)value);
}
}
public boolean isCellEditable(int row, int column)
{
return true;
}
public int getColumnCount()
{
return eventvalues.length;
}
public int getRowCount()
{
//System.out.println(events.length);
return events.length;
}
public Object getValueAt(int row, int column)
{
Object o=null;
switch (column)
{
case 0: o= events[row].getName();
break;
case 1: o= events[row].getDate();
break;
case 2: o=events[row].getOrt();
break;
case 3: o=events[row].getUhrzeit();
break;
case 4: o=events[row].getStatus();
}
return o;
}
public String getColumnName(int column)
{
return eventvalues[column];
}
//weitere Methoden zum Anlegen und löschen von Daten in dieser Modellklasse ausgelassen
Mit der Methode "setUpComboBox()" - siehe Code oben möchte ich bewirken, dass alle Zellen der letzten Spalte außer der Spaltenüberschrift mit einer JComboBox dargestllt werden.
Aber genau das funktioniert nicht. Die Zellen werden ganz normal - ohne JComboBox dargestellt.
Und ich weiß nicht woran es liegen könnte.
Gruß, Ralf.