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

#ifndef __javax_swing_JTable$FloatCellRenderer__
#define __javax_swing_JTable$FloatCellRenderer__

#pragma interface

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

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

public:
  JTable$FloatCellRenderer(::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$FloatCellRenderer__
