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

#ifndef __javax_swing_ScrollPaneConstants__
#define __javax_swing_ScrollPaneConstants__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
        class ScrollPaneConstants;
    }
  }
}

class javax::swing::ScrollPaneConstants : public ::java::lang::Object
{

public:
  static ::java::lang::String * VIEWPORT;
  static ::java::lang::String * VERTICAL_SCROLLBAR;
  static ::java::lang::String * HORIZONTAL_SCROLLBAR;
  static ::java::lang::String * ROW_HEADER;
  static ::java::lang::String * COLUMN_HEADER;
  static ::java::lang::String * LOWER_LEFT_CORNER;
  static ::java::lang::String * LOWER_RIGHT_CORNER;
  static ::java::lang::String * UPPER_LEFT_CORNER;
  static ::java::lang::String * UPPER_RIGHT_CORNER;
  static ::java::lang::String * LOWER_LEADING_CORNER;
  static ::java::lang::String * LOWER_TRAILING_CORNER;
  static ::java::lang::String * UPPER_LEADING_CORNER;
  static ::java::lang::String * UPPER_TRAILING_CORNER;
  static ::java::lang::String * VERTICAL_SCROLLBAR_POLICY;
  static ::java::lang::String * HORIZONTAL_SCROLLBAR_POLICY;
  static const jint VERTICAL_SCROLLBAR_AS_NEEDED = 20;
  static const jint VERTICAL_SCROLLBAR_NEVER = 21;
  static const jint VERTICAL_SCROLLBAR_ALWAYS = 22;
  static const jint HORIZONTAL_SCROLLBAR_AS_NEEDED = 30;
  static const jint HORIZONTAL_SCROLLBAR_NEVER = 31;
  static const jint HORIZONTAL_SCROLLBAR_ALWAYS = 32;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __javax_swing_ScrollPaneConstants__
