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

#ifndef __javax_swing_AbstractButton$1__
#define __javax_swing_AbstractButton$1__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace beans
    {
        class PropertyChangeEvent;
    }
  }
  namespace javax
  {
    namespace swing
    {
        class AbstractButton;
        class AbstractButton$1;
    }
  }
}

class javax::swing::AbstractButton$1 : public ::java::lang::Object
{

public: // actually package-private
  AbstractButton$1(::javax::swing::AbstractButton *);
public:
  virtual void propertyChange(::java::beans::PropertyChangeEvent *);
public: // actually package-private
  ::javax::swing::AbstractButton * __attribute__((aligned(__alignof__( ::java::lang::Object)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_AbstractButton$1__
