Hallo,
ich habe eine JTable mit einem eigenen TableCellRenderer. Wenn ich den TableCellRenderer der JTable hinzufüge mit
dann zeigt die Tabelle die Strings in den Zellen nicht mehr an. Wenn ich den TableCellRenderer NICHT hinzufüge, dann erscheinen die Werte in den Zellen wieder. Die Strings sind aber da, ich kann sie mir mit getValueAt(int row, int column); ausgeben lassen. Nur werden die Strings halt nicht sichtbar dargestellt in der JTable. ???:L ;(
Ich weiss im Moment einfach nicht warum... Hat jemand von euch einen Tip für mich?
Hier mal die Klasse die von JTable erbt (mit inner Klasse, die JWebCTableCellRenderer):
Und hier ein Teilausschnitt der Klasse wo die JWebCTable erstellt wird:
ich habe eine JTable mit einem eigenen TableCellRenderer. Wenn ich den TableCellRenderer der JTable hinzufüge mit
Java:
table.setDefaultRenderer(Object.class, new JWebCJTableCellRenderer(this.cellBorder));
Ich weiss im Moment einfach nicht warum... Hat jemand von euch einen Tip für mich?
Hier mal die Klasse die von JTable erbt (mit inner Klasse, die JWebCTableCellRenderer):
Java:
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.table.*;
public class JWebCTable extends JTable
{
private static final long serialVersionUID = 1L;
private TitledBorder cellBorder = BorderFactory.createTitledBorder("");
private static boolean cellEdit = false;
public JWebCTable(DefaultTableModel _model)
{
super(_model);
this.initFuncs();
this.setValueAt("HUHUHUHU", 2, 3); // Testhalber um zu prüfen ob der Wert auch angezeigt wird
}
private void initFuncs()
{
this.setDefaultRenderer(Object.class, new JWebCJTableCellRenderer(this.cellBorder));
TableColumnModel columnModel = this.getColumnModel();
for(int i=0; i<columnModel.getColumnCount(); i++)
{
columnModel.getColumn(i).setPreferredWidth(Default.ROW_WIDTH);
}
JTableHeader header = this.getTableHeader();
header.setResizingAllowed(false);
header.setReorderingAllowed(false);
header.setDefaultRenderer(new JWebCJTableHeaderCellRenderer());
this.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
this.setCellSelectionEnabled(true);
this.setRowHeight(Default.ROW_HEIGHT);
this.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
}
public boolean isCellEditable(int row, int col)
{
return this.getCellEdit();
}
public boolean getCellEdit()
{
return cellEdit;
}
public static void setCellEdit(boolean _cellEdit)
{
cellEdit = _cellEdit;
}
private class JWebCJTableCellRenderer extends JLabel implements TableCellRenderer
{
private static final long serialVersionUID = 1L;
private TitledBorder cellBorder;
public JWebCJTableCellRenderer(TitledBorder _cellBorder)
{
this.setForeground(Default.BLACKCOLOR);
this.setFont(Default.TABLE_FONT);
this.setOpaque(true);
this.cellBorder = _cellBorder;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int rowIndex, int colIndex)
{
String cellContent = (String)table.getValueAt(rowIndex, colIndex);
if(cellContent == null || cellContent.equals(""))
{
this.setBackground(Default.WHITECOLOR);
}
else
{
this.setBackground(JWebCalendar.getColorFromCellWithAnEntry());
}
if(isSelected)
{
this.setBackground(Default.TABLE_SELECTION_COLOR);
}
this.setBorder(this.cellBorder);
return this;
}
}
}
Und hier ein Teilausschnitt der Klasse wo die JWebCTable erstellt wird:
Java:
private JScrollPane createWeekTableScrollPane()
{
DefaultTableModel weekModel = new DefaultTableModel(this.columnNames, 6);
JWebCTable weekTable = new JWebCTable(weekModel);
JScrollPane scroll = new JScrollPane(weekTable);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
return scroll;
}