Hallo!
In meinem JTable inkl. TableModel werden alle Class-Typen wunderbar angezeigt, nur String-Daten leider überhaupt nicht
In getColumnClass habe ich schon mit
oder
herumprobiert, leider ohne Erfolg. Wo ist der Fehler?
Meine TableModel-Klasse:
Mein CellRenderer:
In meinem JTable inkl. TableModel werden alle Class-Typen wunderbar angezeigt, nur String-Daten leider überhaupt nicht

In getColumnClass habe ich schon mit
Code:
return getValueAt(0, c).getClass();
Code:
switch(c){
case 6: return Boolean.class;
default: return String.class;
}
Meine TableModel-Klasse:
Code:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import javax.swing.table.AbstractTableModel;
import ejb.ClientView;
import ejb.OrderVO;
import ejb.exceptions.AccessDeniedException;
/**
* TableModel for the table with order data
*/
class OrderTableModel extends AbstractTableModel {
private ClientView clientview = null;
private Object[][] objects;
private OrderVO[] orderVOs;
public OrderTableModel(ClientView cv){
this.clientview = cv;
getData();
}
private String[] columnNames = {"","ID", "Status", "Market", "Asset", "Time", "Buy/Sell",
"Price", "Qty", "", ""};
private Class columnClasses[] = {String.class,String.class,String.class,
String.class,String.class,String.class,
Boolean.class,String.class,String.class,
String.class,String.class};
public void getData() {
Collection coll = null;
Collection sorted = new ArrayList();
Iterator it = null;
try {
coll = clientview.getOrders();
} catch (AccessDeniedException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
it = coll.iterator();
OrderVO smallest_orderVO = null;
while(it.hasNext()) {
smallest_orderVO = getEarliestOrderVO(coll);
System.out.println(smallest_orderVO.getTimestamp());
sorted.add(smallest_orderVO);
coll.remove(smallest_orderVO);
it = coll.iterator();
}
orderVOs = (OrderVO[]) sorted.toArray(new OrderVO[0]);
}
public OrderVO getEarliestOrderVO(Collection coll){
Iterator it = coll.iterator();
long smallest_timestamp = (System.currentTimeMillis());
OrderVO smallest_orderVO = null;
while(it.hasNext()) {
OrderVO tempVO = (OrderVO)it.next();
long temp_timestamp = tempVO.getTimestamp().longValue();
if (smallest_timestamp>temp_timestamp){
smallest_timestamp = temp_timestamp;
smallest_orderVO = tempVO;
}
}
return smallest_orderVO;
}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return orderVOs.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
switch(col){
case 0: return new String("•");
case 1: return orderVOs[row].getId().toString();
case 2: return orderVOs[row].getStatus().toString();
case 3: return orderVOs[row].getMarketVO().getName();
case 4: return orderVOs[row].getAssetTraderVO().getAssetVO().getName();
case 5: return new String("Zeit"); //TODO umwandeln von long in Zeit
case 6: return orderVOs[row].getBuySell();
case 7: return orderVOs[row].getPrice().toString();
case 8: return orderVOs[row].getQuantity().toString();
case 9: return new String("Edit-Button");
case 10: return new String("Delete-Button");
default: return new String("");
}
}
public Class getColumnClass(int c) {
//return columnClasses[ c];
//return getValueAt(0, c).getClass();
switch(c){
case 6: return Boolean.class;
default: return String.class;
}
}
}
Mein CellRenderer:
Code:
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;
class OrderCellRenderer extends JLabel implements TableCellRenderer{
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
setOpaque(true); //set background of cells opaque
/**
* set width and alignment of columns
*/
TableColumnModel columnModel = table.getColumnModel();
columnModel.getColumn(0).setPreferredWidth(10);
columnModel.getColumn(1).setPreferredWidth(20);
columnModel.getColumn(2).setPreferredWidth(40);
columnModel.getColumn(3).setPreferredWidth(50);
columnModel.getColumn(4).setPreferredWidth(50);
columnModel.getColumn(5).setPreferredWidth(40);
columnModel.getColumn(6).setPreferredWidth(50);
columnModel.getColumn(7).setPreferredWidth(50);
columnModel.getColumn(8).setPreferredWidth(30);
columnModel.getColumn(9).setPreferredWidth(50);
columnModel.getColumn(10).setPreferredWidth(50);
return this;
}
}