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

#ifndef __javax_swing_JTable$DoubleCellRenderer__
#define __javax_swing_JTable$DoubleCellRenderer__

#pragma interface

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

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

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

#endif // __javax_swing_JTable$DoubleCellRenderer__
