Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: Java
Expertise: Intermediate
May 11, 1999



Building the Right Environment to Support AI, Machine Learning and Deep Learning

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.



Thanks for your registration, follow us on our social networks to keep up-to-date