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

#ifndef __javax_swing_text_TableView$TableCell__
#define __javax_swing_text_TableView$TableCell__

#pragma interface

#include <javax/swing/text/BoxView.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace text
      {
          class Element;
          class TableView;
          class TableView$TableCell;
      }
    }
  }
}

class javax::swing::text::TableView$TableCell : public ::javax::swing::text::BoxView
{

public:
  TableView$TableCell(::javax::swing::text::TableView *, ::javax::swing::text::Element *);
  virtual jint getColumnCount();
  virtual jint getRowCount();
  virtual void setGridLocation(jint, jint);
  virtual jint getGridRow();
  virtual jint getGridColumn();
private:
  jint __attribute__((aligned(__alignof__( ::javax::swing::text::BoxView)))) row;
  jint column;
public: // actually package-private
  ::javax::swing::text::TableView * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_text_TableView$TableCell__
