Brian is right about Liskov Replacement (up). And Reed is right about "yes" (he also heaved); in fact they both tell you the same thing.
Your public methods are a contract with users of your Foo class saying that you can always call these methods in Foo.
A subclass of Foo means that you say that a subclass, for example. Bar, it is always acceptable to use where you can use Foo. In particular, this means that you do not (necessarily) inherit the implementation of Foo (you can override this, or Foo may be abstract and not give a concrete implementation for the method).
Inheritance of implementation (if any) is a detail; what you really inherit is the public interface, the contract, the promise of users that the panel can be used as Foo.
In fact, they may not even know that they have a Bar, not Foo: if I create a FooFactory and I write it Foo * getAFoo () to return a pointer to the panel, they may never know, and sholdn 't gotta.
When you break this contract, you break Object Orientation. (And the Java Collection classes, throwing NotSupported exceptions, completely break OO - users can no longer use the so-called subclasses polymorphically. This bad, poor design, which caused serious headaches for many many Java users, is not something to imitate.)
If there is a public method that cannot be used by subclasses of Foo, then this method must not be in Foo, it must be in a subclass of Foo, and other subclasses must be obtained from Foo.
Now this does NOT mean that all methods in Foo should be called in subclasses. No, I do not contradict myself. Non-public methods are not part of the public interface of the class.
If you want the method in Foo not to be called in Bar and not to be publicly called in Foo, make this method private or protected.