JTable: eine Zeile bold geschrieben anzeigen lassen

ayten

Grünschnabel
Ich komme hier einfach nicht weiter. Es gibt zwar keine Fehlermeldungen, aber das, was ich will, wird nicht angezeit.


Wenn das Programm funktioniert, sollte einfach "OK" ausgegeben werden. Aber ich habe bis jetzt noch nie mit Tabellen gearbeitet und weiß nicht, was ich da falsch mache.

Hier hab ich die Klasse CellRenderer:

Code:
import java.awt.Color;
import java.awt.Component;
import java.awt.Font; 
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer; 
@SuppressWarnings("serial")

public class CellRenderer extends DefaultTableCellRenderer{         
	StornoGesamtTable table = new StornoGesamtTable();

public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) 
	{        
		         
		if((table.getRowCount() % 2) == 1 && !isSelected)
		{            
			System.out.println("OK");
			//label.setBackground(color);        
		}        
		else if((table.getRowCount() % 2) == 0 && !isSelected)
		{            
			System.out.println("OK");
     
		}            
	}    
}


und wie ich es in die Frame Klasse eingefügt habe:
Code:
......public class MainFrame extends javax.swing.JFrame......
	jTable1.setModel(tm);
								jTable1.setDefaultRenderer(Integer.class, new CellRenderer());

Kann mir vielleicht jemand helfen?
 
Code:
public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) 
    {        
                 
        if((table.getRowCount() % 2) == 1 && !isSelected)
        {            
            System.out.println("OK");
            //label.setBackground(color);        
        }        
        else if((table.getRowCount() % 2) == 0 && !isSelected)
        {            
            System.out.println("OK");
     
        }            
    }    
}
Da sollte aber ne dicke Fehlermeldung kommen. Denn wo bitteschön in der Methode returnst du die Renderer Komponente? Das Programm sollte so garnicht kompilieren...

*grüssle*
MeinerEiner
 
meinst du so? Funktioniert noch nicht, aber danke für die Antwort. Das ist ein Schritt, um weiterzukommen.

Code:
import java.awt.Color;
import java.awt.Component;
import java.awt.Font; 
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer; 
@SuppressWarnings("serial")
public class CellRenderer extends DefaultTableCellRenderer{         
	Color color = new Color(240,240,240); 
	StornoGesamtTable table = new StornoGesamtTable();
 
	

	
/*	public CellRenderer(int rowCount) {
		// TODO Auto-generated constructor stub
	}*/


	public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) 
	{        
		JLabel label = (JLabel)super.getTableCellRendererComponent(table, obj, isSelected,hasFocus, row, column);               
		if((table.getRowCount() % 2) == 1 && !isSelected)
		{            
			System.out.println("stimmt");
			label.setBackground(color);        
		}        
		else if((table.getRowCount() % 2) == 0 && !isSelected)
		{            
			System.out.println("stimmt");
			label.setBackground(Color.WHITE);        
		}               
		return label;   
	}    
}
 
Noch ein
Code:
label.setOpaque(true);
dann sollte es funktionieren..

*grüssle*
MeinerEiner
 
Was mir noch einfällt:
Hast du auch daran gedacht, die Methode
Code:
getColumnClass(int index)
deines TableModels zu überschreiben? Da du deinen Renderer ja nur für Integer Objekte angelegt hast, muss diese Methode auch ein IntegerKlassen Objekt für die jeweiligen Spalten zurückliefern..

*grüssle*
MeinerEiner
 
Zurück