I am having trouble implementing a custom cell renderer which will wrap message content when it extends past one line in length. The following is what I have:

Code:
public class MessageTable extends JTable
{
	private static MessageTable messageTable;
	private DefaultTableModel model = new DefaultTableModel();
	private String[] emptyData = {};
	private TreeMap<Integer, String> messages = null;
	
	public class LineWrapCellRenderer  extends JTextArea implements TableCellRenderer {

        @Override
        public Component getTableCellRendererComponent(
                        JTable table,
                        Object value,
                        boolean isSelected,
                        boolean hasFocus,
                        int row,
                        int column) {
                this.setText((String)value);
                this.setWrapStyleWord(true);                    
                this.setLineWrap(true);      
                
                this.setBackground(Color.YELLOW);
                
                int fontHeight = this.getFontMetrics(this.getFont()).getHeight();
                int textLength = this.getText().length();
                int lines = textLength / this.getColumns() +1;//+1, because we need at least 1 row.                       
                int height = fontHeight * lines;                        
                table.setRowHeight(row, height);
                return this;
        }
	}

	public MessageTable()
	{
		super();
		messageTable = this;
		this.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);		
		
		model.addColumn("Message Number", emptyData);
		model.addColumn("Message Content", emptyData);
		
		this.setModel(model);
		this.setFont(MappingView.theFont);
		
		this.setDefaultRenderer(String.class, new LineWrapCellRenderer());
	}

	/**
	 * Set the current messages.
	 * @param messages
	 */
	public void setCurrentMessages(TreeMap<Integer, String> messages)
	{
		clearCurrentMessages();

		this.messages = messages;

		if (messages != null)
		{
			for (Integer key : messages.keySet())
			{
				String[] row = { key.toString(), messages.get(key).toString() };
				model.addRow(row);
			}
		}
	}
What am I doing wrong here?

Thanks.