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

#ifndef __javax_swing_plaf_metal_MetalBorders$RolloverButtonBorder__
#define __javax_swing_plaf_metal_MetalBorders$RolloverButtonBorder__

#pragma interface

#include <javax/swing/plaf/metal/MetalBorders$ButtonBorder.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Component;
        class Graphics;
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace plaf
      {
        namespace metal
        {
            class MetalBorders$RolloverButtonBorder;
        }
      }
    }
  }
}

class javax::swing::plaf::metal::MetalBorders$RolloverButtonBorder : public ::javax::swing::plaf::metal::MetalBorders$ButtonBorder
{

public:
  MetalBorders$RolloverButtonBorder();
  virtual void paintBorder(::java::awt::Component *, ::java::awt::Graphics *, jint, jint, jint, jint);
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_metal_MetalBorders$RolloverButtonBorder__
