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

#ifndef __javax_swing_plaf_basic_BasicScrollPaneUI$HSBChangeListener__
#define __javax_swing_plaf_basic_BasicScrollPaneUI$HSBChangeListener__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace event
      {
          class ChangeEvent;
      }
      namespace plaf
      {
        namespace basic
        {
            class BasicScrollPaneUI;
            class BasicScrollPaneUI$HSBChangeListener;
        }
      }
    }
  }
}

class javax::swing::plaf::basic::BasicScrollPaneUI$HSBChangeListener : public ::java::lang::Object
{

public:
  BasicScrollPaneUI$HSBChangeListener(::javax::swing::plaf::basic::BasicScrollPaneUI *);
  virtual void stateChanged(::javax::swing::event::ChangeEvent *);
public: // actually package-private
  ::javax::swing::plaf::basic::BasicScrollPaneUI * __attribute__((aligned(__alignof__( ::java::lang::Object)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_basic_BasicScrollPaneUI$HSBChangeListener__
