Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: AWT
Expertise: Beginner
Apr 7, 2000

Determining the Top Level Frame

Question:
I have developed a custom AWT component that can be placed at any level in a component hierarchy. How can it determine the top level Frame in the hierarchy?

Answer:
When using components derived from JComponent, it is possible to use getTopLevelAncestor() to determine the topmost enclosing container in the component hierarchy. Depending on what you want to do, getRootPane() may be more appropriate. It returns the RootPane of the containing JFrame. The SwingUtilities class also contains a getRoot() method which you can use to get the root component in the component tree. This method will work with AWT as well as Swing classes.

However, when dealing with AWT components strictly derived from Component, and using JDK 1.1 without Swing, you have to walk the Window hierarchy with getParent. The following convenience method will return the topmost component of a window hierarchy.

public static Component getRootWindow(Component component) {
       Component last;

       do {
         last = component;
         component = component.Parent();
       } while(component != null);

       if(last instanceof Window)
         return last;
       else
         return null;
}
DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap