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: Java
Expertise: Intermediate
May 10, 1999

Getting a Reference to the Parent Frame

Instances of java.awt.Dialog are often used to display error messages in an application. As a result, you may find yourself writing a component that displays a message in a Dialog when a user performs some action. However, implementing this behavior is complicated by the fact that the Dialog constructors require a reference to a java.awt.Frame instance. It's not usually desirable to have your components "know about" or rely upon a reference to the Frame that contains them. That approach is known as tight coupling, and makes code difficult to reuse.

To obtain a reference to the Frame without tight coupling, you can traverse the component tree until you find an instance of the Frame class. Then you can create a Dialog instance to display messages. When the InfoPanel class needs access to a Dialog instance, it can call the getErrorDialog() method, which in turn calls createDialog(). The createDialog() method is called recursively until passed a reference to a Frame, which it uses to construct an instance of Dialog.

 
import java.awt.*;
public class InfoPanel extends Panel {

	Dialog errorDialog;

	public Dialog getErrorDialog() {
		if (errorDialog == null) {
			errorDialog = createDialog(this);
		}  //  if (errorDialog == null)
		return errorDialog;
	}  //  public Dialog getErrorDialog()

	private static Dialog createDialog(Component comp) {
		if (comp instanceof Frame) {
			return new Dialog((Frame)comp);
		}  //  if (comp instanceof Frame)
		else return createDialog(comp.getParent());
	}  //  private static Dialog createDialog()

}  //  public class InfoPanel extends Panel
Brett Spell
 
Comment and Contribute

 

 

 

 

 


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

 

 

Sitemap