JTable- TableModel und TableCellRenderer Konflikt

bibabutzelmann

Grünschnabel
HI,

habe folgendes Problem wenn ich einen JTable erzeuge:

Habe für meinen JTable ein TableModel und einen TableCellRenderer implementiert, funktionieren auch beide wunderbar solange ich sie nicht gemeinsam benutze. Wenn ich Sie gemeinsam benutze verwendet Jave einfach seinen DefaultCellRenderer...

Bsp:

Code:
table = new JTable(9,9); //hiermit funktioniert mein TableCellRenderer
table.setDefaultRenderer(Object.class, new TableCellRendererImpl());//wird eingebunden
------------------------------------------------------------------------------------------------------

table = new JTable(new TableModelImpl()); //hier greift Java einfach auf den DefaultCellRenderer zurück
table.setDefaultRenderer(Object.class, new TableCellRendererImpl()); //und bindet diesen nicht mehr ein

Kann mir irgendwer helfen? komm einfach nicht weiter mit diesem Problem.
bin für jeden tipp dankbar...
 
mein model und renderer

hier noch kurz der Quellcode des Renderers:

Code:
public class TableCellRendererImpl implements TableCellRenderer {
	
	private static final long serialVersionUID = 1L;
	
	  
	   private Color colorSelected = new Color( 255, 200, 200 );
	   private Color colorFocus    = new Color( 200, 200, 200 );
	   private Color colorNormal   = new Color( 200, 255, 200 );
	   private Color colorBorder   = new Color(   0,   0,   0 );

	   public TableCellRendererImpl(){
		   System.out.println("billibullu");
	   }
 
	   public Component getTableCellRendererComponent(JTable table, Object value,
	         boolean isSelected, boolean hasFocus, int row, int column) {
		  
		   JLabel label = new JLabel((String)value);
		   label.addKeyListener(new KeyListenerImpl());
		  /*********************create borders********************************/ 
		  if((row==2)||(row==5)){ 
			   if((column==2)||(column==5)){
			   		Border b = BorderFactory.createMatteBorder(0, 0, 2, 2, colorBorder);
			   		label.setBorder(b);
			   }else{
				   Border b = BorderFactory.createMatteBorder(0, 0, 2, 0, colorBorder);
			   	   label.setBorder(b);
			   }
		  }else if((column==2)||(column==5)){
			  
			 Border b = BorderFactory.createMatteBorder(0, 0, 0, 2, colorBorder);
			 label.setBorder(b);
		  }
		  if (value!= null){
			  label.setFont(new Font(value.toString(),2,30));
		  }
		  
	      return label;
	   }
	}

und hier der des TableModels:

Code:
public class TableModelImpl extends AbstractTableModel implements TableModel {
	
	
	private static final long serialVersionUID = 1L;
			
	      Integer data[][]=new Integer[9][9];
	      String headers[] = { "C1", "C2", "C3", "C4", "C5","C6", "C7", "C8", "C9"};

	      public int getColumnCount( ) { return headers.length; }
	      public int getRowCount( ) { return data.length; }
	      public String getColumnName(int col) { return headers[col]; }
	      public Class getColumnClass(int col) {
	        return Integer.class;
	      }
	      
	      public boolean isCellEditable(int row, int col) { return true; }
	      public Object getValueAt(int row, int col) { return data[row][col]; }
	      
	      public void setValueAt(Object value, int row, int col) {
	    	  
	    	  try{
	    	  	Integer value2=new Integer(value.toString());
	    	  	data[row][col] = value2;
	    	  }catch(Exception e){
	    		data[row][col] = null;  
	    	  }
	    	  this.fireTableDataChanged();
	      }
	      
	      public void clearModel(){
	    	  for(int j=0; j<9; j++){
	    		  for(int i=0; i<9; i++){
	    			  setValueAt(this,j,i);
	    		  }
	    	  }
	      }
	  
}
 
Hat sich erledigt,


table = new JTable(new TableModelImpl());
table.setDefaultRenderer(Integer.class, new TableCellRendererImpl());
 
Zurück