import java.awt.*;
import java.awt.BorderLayout;

import javax.swing.*;
import javax.swing.table.*;
import javax.swing.table.AbstractTableModel;


/**
 * @author Remi Forax
 *
 */
public class Table {

  static class ArgTableModel extends AbstractTableModel {
    public ArgTableModel(String[] arguments) {
      this.arguments=arguments;
    }
    
    public int getRowCount() {
      return arguments.length;
    }

    public int getColumnCount() {
      return 2;
    }
    
    public Class getColumnClass(int column) {
      return (column==0)?String.class:Integer.class;
    }

    public Object getValueAt(int row, int column) {
      String arg=arguments[row];
      if (column==0)
        return arg;
      else
        return new Integer(arg.length());
    }
    
    public String getColumnName(int column) {
      return (column==0)?"argument":"taille";
    }

    private final String[] arguments;
  }
  
  public static void main(String[] args) {
    JFrame frame=new JFrame();
    
    JTable table=new JTable(new ArgTableModel(args));
    table.setDefaultRenderer(Integer.class, new DefaultTableCellRenderer(){
      public Component getTableCellRendererComponent(
        JTable table,Object value,
        boolean isSelected,boolean hasFocus,int row,int column) {
        
        int length=((Integer)value).intValue();
        
        setForeground((length>4)?Color.RED:Color.BLACK);

        return super.getTableCellRendererComponent(
          table,value,isSelected,hasFocus,row,column);
      }

    });
    frame.setContentPane(new JScrollPane(table));
    
    frame.setSize(400,300);
    frame.setVisible(true);
  }
}
