Une interface utilisateur graphique (GUI) construite à l'aide du Plateforme Java NetBeans est composé de plusieurs couches de conteneurs. La première couche est la fenêtre utilisée pour déplacer l'application sur l'écran de votre ordinateur. C'est ce qu'on appelle le conteneur de niveau supérieur, et son travail consiste à donner à tous les autres conteneurs et composants graphiques un endroit où travailler. Généralement, pour une application de bureau, ce conteneur de niveau supérieur sera créé à l'aide du
classe.
Vous pouvez ajouter un nombre quelconque de couches à votre conception d'interface graphique, en fonction de sa complexité. Vous pouvez placer des composants graphiques (par exemple, des zones de texte, des étiquettes, des boutons) directement dans le
ou vous pouvez les regrouper dans d'autres conteneurs.
Les couches de l'interface graphique sont connues sous le nom de hiérarchie de confinement et peuvent être considérées comme un arbre généalogique. Si la
est le grand-père assis en haut, alors le conteneur suivant peut être considéré comme le père et les composants qu'il contient comme les enfants.
Pour cet exemple, nous allons créer une interface graphique avec un
contenant deux
et un
. La première
tiendra un
et
. La deuxième
tiendra un
et un
. Seulement un
(et donc les composants graphiques qu'il contient) seront visibles à la fois. Le bouton sera utilisé pour changer la visibilité des deux
.
Il existe deux façons de créer cette interface graphique à l'aide de NetBeans. La première consiste à taper manuellement le code Java qui représente l'interface graphique, qui est abordé dans cet article. La seconde consiste à utiliser l'outil de création d'interface graphique NetBeans pour créer des interfaces graphiques Swing.
Pour plus d'informations sur l'utilisation de JavaFX plutôt que Swing pour créer une interface graphique, consultez Qu'est-ce que JavaFX?
Remarque: Le code complet de ce projet est à Exemple de code Java pour la création d'une application graphique simple.
Configuration du projet NetBeans
Créer un nouveau Java Projet d'application dans NetBeans avec une classe principale Nous appellerons le projet
Point de contrôle: Dans la fenêtre Projets de NetBeans doit se trouver un dossier GuiApp1 de niveau supérieur (si le nom n'est pas en gras, cliquez avec le bouton droit sur le dossier et choisissez
). Sous la
Le dossier doit être un dossier Packages source avec
appelé GuiApp1. Ce dossier contient la classe principale appelée
.Java.
Avant d'ajouter du code Java, ajoutez les importations suivantes en haut de la
classe, entre le
ligne et la
:
Ces importations signifient que toutes les classes dont nous avons besoin pour créer cette application graphique seront disponibles pour nous.
Dans la méthode principale, ajoutez cette ligne de code:
Cela signifie que la première chose à faire est de créer un nouveau
objet. C'est un bon raccourci pour les programmes d'exemple, car nous n'avons besoin que d'une seule classe. Pour que cela fonctionne, nous avons besoin d'un constructeur pour le
classe, ajoutez donc une nouvelle méthode:
Dans cette méthode, nous mettrons tout le code Java nécessaire pour créer l'interface graphique, ce qui signifie que chaque ligne sera désormais à l'intérieur du
méthode.
Note de conception: Vous avez peut-être vu du code Java publié qui montre la classe (c'est-à-dire,
) étendu d'un
. Cette classe est ensuite utilisée comme fenêtre d'interface graphique principale pour une application. Il n'y a vraiment pas besoin de le faire pour une application GUI normale. La seule fois où vous voudriez étendre la
la classe est si vous avez besoin de faire un type plus spécifique de
(jeter un coup d'œil à
pour plus d'informations sur la création d'une sous-classe).
Comme mentionné précédemment, la première couche du GUI est une fenêtre d'application faite à partir d'un
. Créer un
objet, appelez le
constructeur:
Ensuite, nous allons définir le comportement de notre fenêtre d'application GUI, en utilisant ces quatre étapes:
1. Assurez-vous que l'application se ferme lorsque l'utilisateur ferme la fenêtre afin qu'elle ne continue pas à s'exécuter inconnue en arrière-plan:
2. Définissez un titre pour la fenêtre afin qu'elle ne comporte pas de barre de titre vide. Ajoutez cette ligne:
3. Définissez la taille de la fenêtre, de sorte que la fenêtre soit dimensionnée pour accueillir les composants graphiques que vous y placez.
Note de conception: Une autre option pour définir la taille de la fenêtre consiste à appeler
méthode du
classe. Cette méthode calcule la taille de la fenêtre en fonction des composants graphiques qu'elle contient. Étant donné que cet exemple d'application n'a pas besoin de modifier la taille de sa fenêtre, nous allons simplement utiliser le
méthode.
4. Centrez la fenêtre pour qu'elle apparaisse au milieu de l'écran de l'ordinateur afin qu'elle n'apparaisse pas dans le coin supérieur gauche de l'écran:
Ajout des deux JPanels
Les deux lignes ici créent valeurs pour le
et
objets que nous allons créer sous peu, en utilisant deux
tableaux. Cela facilite le remplissage de quelques exemples d'entrées pour ces composants:
Créer le premier objet JPanel
Maintenant, créons le premier
objet. Il contiendra un
et un
. Les trois sont créés via leurs méthodes constructeurs:
Remarques sur les trois lignes ci-dessus:
- le
JPanel
la variable est déclarée final. Cela signifie que la variable ne peut contenir que leJPanel
qui est créé dans cette ligne. Le résultat est que nous pouvons utiliser la variable dans une classe interne. Il deviendra évident pourquoi nous voulons plus tard dans le code. - le
JLabel
etJComboBox
ont des valeurs qui leur sont transmises pour définir leurs propriétés graphiques. L'étiquette apparaîtra comme "Fruits:" et la zone de liste déroulante aura maintenant les valeurs contenues dans lefruitOptions
tableau déclaré plus tôt. - le
ajouter()
méthode duJPanel
y place des composants graphiques. UNEJPanel
utilise FlowLayout par défaut gestionnaire de mise en page. C'est très bien pour cette application car nous voulons que l'étiquette se trouve à côté de la zone de liste déroulante. Tant que nous ajoutons leJLabel
D'abord, ça ira bien:
Créer le deuxième objet JPanel
La deuxième
suit le même schéma. Nous ajouterons un
et un
et définissez les valeurs de ces composants sur "Légumes:" et le second
tableau
. La seule autre différence est l'utilisation du
méthode pour masquer le
. N'oubliez pas qu'il y aura un
contrôler la visibilité des deux
. Pour que cela fonctionne, il faut être invisible au début. Ajoutez ces lignes pour configurer la seconde
:
Une ligne à noter dans le code ci-dessus est l'utilisation du
méthode du
. le
La valeur affiche la liste des éléments qu'elle contient dans deux colonnes. C'est ce qu'on appelle un "style journal" et c'est une bonne façon d'afficher une liste d'articles plutôt qu'une colonne verticale plus traditionnelle.
Ajout de touches de finition
Le dernier composant nécessaire est le
pour contrôler la visibilité de la
s. La valeur passée dans le
constructeur définit le libellé du bouton:
Il s'agit du seul composant pour lequel un écouteur d'événements sera défini. Un "événement" se produit lorsqu'un utilisateur interagit avec un composant graphique. Par exemple, si un utilisateur clique sur un bouton ou écrit du texte dans une zone de texte, un événement se produit.
Un écouteur d'événements indique à l'application ce qu'il doit faire lorsque l'événement se produit.
utilise la classe ActionListener pour «écouter» un clic de bouton par l'utilisateur.
Créer l'écouteur d'événements
Parce que cette application effectue une tâche simple lorsque le bouton est cliqué, nous pouvons utiliser une classe interne anonyme pour définir l'écouteur d'événements:
Cela peut ressembler à du code effrayant, mais il vous suffit de le décomposer pour voir ce qui se passe:
- Tout d'abord, nous appelons
addActionListener
méthode duJButton
. Cette méthode attend une instance de laActionListener
classe, qui est la classe qui écoute l'événement. - Ensuite, nous créons l'instance de la
ActionListener
classe en déclarant un nouvel objet à l'aidenew ActionListener ()
puis fournir une classe interne anonyme - qui est tout le code à l'intérieur des accolades. - A l'intérieur de la classe interne anonyme, ajoutez une méthode appelée
actionPerformed ()
. Il s'agit de la méthode appelée lorsque vous cliquez sur le bouton. Tout ce qui est nécessaire dans cette méthode est d'utilisersetVisible ()
pour changer la visibilité de laJPanel
s.
Ajouter les JPanels au JFrame
Enfin, nous devons ajouter les deux
le sable
à la
. Par défaut, un
utilise le gestionnaire de disposition BorderLayout. Cela signifie qu'il y a cinq zones (sur trois rangées)
qui peut contenir une composante graphique (NORD, {OUEST, CENTRE, EST}, SUD). Spécifiez cette zone à l'aide du
méthode:
Définissez le JFrame pour qu'il soit visible
Enfin, tout le code ci-dessus n'aura servi à rien si nous ne définissons pas le
être visible:
Nous sommes maintenant prêts à exécuter le projet NetBeans pour afficher la fenêtre de l'application. Cliquez sur le bouton pour basculer entre l'affichage de la liste déroulante ou de la liste.