
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __javax_swing_JTable$DateCellRenderer__
#define __javax_swing_JTable$DateCellRenderer__

#pragma interface

#include <javax/swing/table/DefaultTableCellRenderer.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Component;
    }
  }
  namespace javax
  {
    namespace swing
    {
        class JTable;
        class JTable$DateCellRenderer;
    }
  }
}

class javax::swing::JTable$DateCellRenderer : public ::javax::swing::table::DefaultTableCellRenderer
{

  JTable$DateCellRenderer(::javax::swing::JTable *);
public:
  virtual ::java::awt::Component * getTableCellRendererComponent(::javax::swing::JTable *, ::java::lang::Object *, jboolean, jboolean, jint, jint);
public: // actually package-private
  JTable$DateCellRenderer(::javax::swing::JTable *, ::javax::swing::JTable$DateCellRenderer *);
  ::javax::swing::JTable * __attribute__((aligned(__alignof__( ::javax::swing::table::DefaultTableCellRenderer)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_JTable$DateCellRenderer__
