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

#ifndef __javax_swing_RootPaneContainer__
#define __javax_swing_RootPaneContainer__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Component;
        class Container;
    }
  }
  namespace javax
  {
    namespace swing
    {
        class JLayeredPane;
        class JRootPane;
        class RootPaneContainer;
    }
  }
}

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

public:
  virtual ::javax::swing::JRootPane * getRootPane() = 0;
  virtual void setContentPane(::java::awt::Container *) = 0;
  virtual ::java::awt::Container * getContentPane() = 0;
  virtual void setLayeredPane(::javax::swing::JLayeredPane *) = 0;
  virtual ::javax::swing::JLayeredPane * getLayeredPane() = 0;
  virtual void setGlassPane(::java::awt::Component *) = 0;
  virtual ::java::awt::Component * getGlassPane() = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __javax_swing_RootPaneContainer__
