Une fenêtre est une surface rectangulaire de l'écran qui reçoit les actions de l'utilisateur sur le clavier ou la souris, et affiche des contrôles graphiques sur sa surface. Trois classes de fenêtres sont actuellement disponibles pour développer une application :
Une boîte de dialogue est une fenêtre souvent appelée de manière bloquante pour permettre à l'utilisateur de saisir ou de consulter des informations. Elle peut cependant posséder une barre de menus et être utilisée comme fenêtre principale d'une application. Une boîte de dialogue appelée de manière non modale se positionne constamment au-dessus de la fenêtre principale, si elle a été maquettée après celle-ci. Sinon, elle peut être masquée par la fenêtre principale.
Une fenêtre principale contient généralement la barre de titre du programme, une barre de menus, une bordure, une ou plusieurs barres d'outils, et une barre d'état. Une telle fenêtre possède une zone client dans laquelle s'affichent des fenêtres filles.
Ce type de fenêtre n'est pas géré par le générateur Java.
Une fenêtre fille est une fenêtre qui s'affiche tronquée dans la zone client de la fenêtre principale. Elle s'exécute toujours de manière non bloquante. Plusieurs fenêtres filles peuvent donc être ouvertes simultanément, mais une seule est active à un instant donné. Une fenêtre fille peut posséder une barre de menus, qui remplace la barre de menus de la fenêtre principale lorsqu'elle devient active.
Elle peut être réduite, et apparaît en bas à gauche de la zone client, ou agrandie pour occuper toute la zone client. Sa barre de titre disparaît alors, et son titre complète celui de la fenêtre principale.
Les fenêtres filles peuvent être affichées en cascade ou en mosaïque. Leurs icônes peuvent être réorganisées à l'aide des méthodes de la fenêtre principale.
Ce type de fenêtre n'est pas géré par le générateur Java.
Lors du maquettage, il est possible de placer n'importe quel objet graphique sur le fond d'une fenêtre fille ou d'une boîte de dialogue. Par contre, seule la barre d'outils peut être placée sur le fond d'une fenêtre principale.
Une fenêtre fille doit être maquettée après une fenêtre principale, cette dernière pouvant se trouver dans le même programme ou dans un programme appelant.
Une fenêtre fille ne peut pas être exécutée sans qu'une fenêtre principale le soit déjà. Si deux fenêtres, principale et fille, doivent être exécutées au lancement d'une application, l'ordre EXECUTER concernant la fenêtre fille doit être mis sur l'événement Initialisation de la fenêtre principale.
Une application ne possède généralement qu'une fenêtre principale. Cependant, il est possible de définir plusieurs fenêtres principales au sein d'un même programme VADELIA ou d'une même application. Chaque fenêtre principale provoque la création d'un bouton dans la barre des tâches du système.
Lors de l'appel d'un programme, les fenêtres sont toutes créées immédiatement, dans l'ordre fixé par la vue arborescente du programme dans l'éditeur. Lors de la création d'une fenêtre fille, il est nécessaire de connaître sa fenêtre parente. Ce peut la dernière fenêtre principale créée ou la dernière fenêtre principale activée par l'utilisateur. Il est donc possible d'écrire un programme ne contenant que des fenêtres filles si ce programme est appelé d'un programme contenant une fenêtre principale.
Les fenêtres filles et les fenêtres principales possèdent éventuellement des options de menu communes. Il est possible de coder une seule fois ces options dans la fenêtre principale en saisissant le même nom d'option, lors de la définition des menus.
Les fenêtres filles et les boîtes de dialogue peuvent posséder des onglets ; les contrôles graphiques peuvent alors être posés sur les différentes pages et dans les marges. Une seule page est visible à un instant donné.
Remarque :
Un programme exécutant une fenêtre ne se terminera que si ses fenêtres et toutes les fenêtres exécutées de manière modale ou non (par lui ou par d'autres programmes du même processus) après l'exécution de sa fenêtre sont fermées.
Cliquez ci-dessous pour plus de détails sur :