Habe bereits ein wenig rumexperimentiert allerdings werden von meinen 11 Spalten nur 5 mit meiner Wunsch-Hintergrundfarbe eingefärbt und ich weiß nicht weshalb nicht die komplette Zeile eingefärbt wird.
Hier einmal meine Codes:
KlasseMain => Erstellen der Tabelle
Klasse AbstractTable Model:
Deine Klasse Table-Renderer:
und auch dieser Renderer hat nicht den Erfolg gebracht:
Kann mir evt. jemand helfen und sagen weshalb nicht alle Spalten der ersten und zweiten Teile rot makiert werden???
Danke im voraus!
Gruss
Muecke
Hier einmal meine Codes:
KlasseMain => Erstellen der Tabelle
Code:
/* Panel für die Übersichts-Tabelle */
JTable tableOverview = new JTable(new EBayOrgaMainDTableModel());
JTableHeader header = tableOverview.getTableHeader();
header.setBackground(Color.GRAY);
header.setForeground(Color.white);
tableOverview.getModel().addTableModelListener(this);
tableOverview.setDefaultRenderer(Object.class, new RowColorRenderer());
Klasse AbstractTable Model:
Code:
public class EBayOrgaMainDTableModel extends AbstractTableModel
{
private boolean DEBUG = false;
private String[] columnNames = { "Nr.", "eBayName", "Name", "Vorname", "Ort", "Email",
"Betrag", "Porto", "Bezahlt", "Verschickt", "Bewertet" };
private Object[][] data =
{
{ new Integer(0), "","","","","", new Integer(0), new Integer(0), new Boolean(false), new Boolean(false), new Boolean(false) },
{ new Integer(1), "","","","","", new Integer(0), new Integer(0), new Boolean(false), new Boolean(false), new Boolean(false) },
{ new Integer(2), "","","","","", new Integer(0), new Integer(0), new Boolean(false), new Boolean(false), new Boolean(false) },
{ new Integer(3), "","","","","", new Integer(0), new Integer(0), new Boolean(false), new Boolean(false), new Boolean(false) },
{ new Integer(4), "","","","","", new Integer(0), new Integer(0), new Boolean(false), new Boolean(false), new Boolean(false) },
{ new Integer(5), "","","","","", new Integer(0), new Integer(0), new Boolean(false), new Boolean(false), new Boolean(false) },
{ new Integer(6), "","","","","", new Integer(0), new Integer(0), new Boolean(false), new Boolean(false), new Boolean(false) },
{ new Integer(7), "","","","","", new Integer(0), new Integer(0), new Boolean(false), new Boolean(false), new Boolean(false) },
};
public int getColumnCount()
{
return columnNames.length;
}
public int getRowCount()
{
return data.length;
}
public String getColumnName(int col)
{
System.out.println(columnNames[col]);
return columnNames[col];
}
public Object getValueAt(int row, int col)
{
return data[row][col];
}
/* Checkboxen in Spalten setzen! Funktionsweise leider noch ???? -> Es geht einfach... */
public Class getColumnClass(int c)
{
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col)
{
return true;
}
public void setValueAt(Object value, int row, int col)
{
if (DEBUG)
{
System.out.println("Setting value at " + row + "," + col
+ " to " + value + " (an instance of "
+ value.getClass() + ")");
}
data[row][col] = value;
fireTableCellUpdated(row, col);
if (DEBUG)
{
System.out.println("New value of data:");
printDebugData();
}
}
private void printDebugData()
{
int numRows = getRowCount();
int numCols = getColumnCount();
for (int i = 0; i < numRows; i++)
{
System.out.print(" row " + i + ":");
for (int j = 0; j < numCols; j++)
{
System.out.print(" " + data[i][j]);
}
System.out.println();
}
System.out.println("--------------------------");
}
}
Deine Klasse Table-Renderer:
Code:
class RowColorRenderer implements TableCellRenderer
{
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
Border border = BorderFactory.createEmptyBorder(1, 1, 1, 1);
JLabel label = new JLabel((String) value);
label .setOpaque(true);
label .setBorder(border);
label .setFont(table.getFont());
label .setForeground(table.getForeground());
label .setBackground(table.getBackground());
label .setHorizontalAlignment(SwingConstants.RIGHT);
column = table.convertColumnIndexToModel(column);
if (table.getColumnCount() == 0)
{
System.out.println("ColumnCount ist 0 ");
}
else
{
if (row == 0)
{
label .setBackground(Color.RED);
}
if (row == 1)
{
label .setBackground(Color.RED);
}
}
return label ;
}
}
und auch dieser Renderer hat nicht den Erfolg gebracht:
Code:
class RowColorRenderer extends javax.swing.table.DefaultTableCellRenderer
{
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
// component will actually be this.
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
setBackground(Color.yellow);
return this;
}
}
Kann mir evt. jemand helfen und sagen weshalb nicht alle Spalten der ersten und zweiten Teile rot makiert werden???
Danke im voraus!
Gruss
Muecke