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

#ifndef __javax_swing_Spring$MinusSpring__
#define __javax_swing_Spring$MinusSpring__

#pragma interface

#include <javax/swing/Spring.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
        class Spring;
        class Spring$MinusSpring;
    }
  }
}

class javax::swing::Spring$MinusSpring : public ::javax::swing::Spring
{

public:
  ::java::lang::String * toString();
public: // actually protected
  Spring$MinusSpring(::javax::swing::Spring *);
public:
  jint getMaximumValue();
  jint getMinimumValue();
  jint getPreferredValue();
  jint getValue();
  void setValue(jint);
private:
  ::javax::swing::Spring * __attribute__((aligned(__alignof__( ::javax::swing::Spring)))) s;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_Spring$MinusSpring__
