Conseils utiles

Interface graphique Java

Pin
Send
Share
Send
Send


À ce stade, la grille ne fera rien de spécial, mais si vous voulez expérimenter un peu, vous pouvez ajouter des écouteurs ActionListener et un peu de logique pour créer un simple jeu en 2D comme le tic-tac-toe ou un jeu plus complexe comme Sea Battle.

Remarque: dans cet article, Eclipse est utilisé pour tous les exemples. Il peut donc exister des différences en fonction de ce que vous utilisez>, mais il est presque inutile pour de tels graphiques> principalement en raison de l'utilisation de l'environnement par glisser-déposer.

  1. 1 Créez un projet Java. C'est assez simple. Lancez votre environnement de développement et créez un nouveau projet. Appelez-le comme vous voulez. Dans notre exemple, ce sera un bout à bout.
    • Le nom n'a pas d'importance, car il s'agit simplement du nom du fichier.

2 Créez une classe Java avec la méthode main. Créez une nouvelle classe et nommez-la comme vous le souhaitez. Dans notre exemple, ce sera un bout à bout. Les utilisateurs d’Eclipse cliquent simplement sur le champ intitulé "public static void main (string [] args)", c.-à-d. vous n'aurez pas besoin de le taper vous-même.

    Ce nom est plus important. que le précédent, puisqu'il doit être composé d'un mot, sinon il ne peut pas être utilisé.

  • 3 Importez les bibliothèques. De cette façon, vous aurez accès à toutes les informations dont vous avez besoin pour écrire votre code. Vous devez importer javax.swing.JFrame, javax.swing.JButton et java.awt.Gr> Créer un constructeur. Le constructeur crée une instance de la classe buttongr> Créer la fenêtre principale (frame):
    1. Le cadre doit avoir un nom. Pour qu'il puisse être référencé en dehors du constructeur ButtonGr>
    2. Dans le constructeur, nous devons nous assurer que tous les boutons sont placés sur la grille. Pour ce faire, nous devons définir le placement dans le cadre en tapant ce qui suit: frame.setLayout (new GridLayout (x, y)),

    Non absolument nécessaire, mais pour que la fenêtre principale se ferme lorsque vous cliquez sur le bouton "x" dans son coin supérieur droit, vous devez ajouter la ligne suivante: frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE),

    Afin de définir la taille correcte du cadre, et pour qu'il contienne tout ce dont nous avons besoin, nous devons exécuter la commande d'empaquetage: frame.pack (),

    La dernière chose à faire avec un cadre est de le rendre visible: frame.setVisible (true),

    6 Créez une grille avec des boutons:

      Nous devons créer des boutons avec lesquels l'utilisateur interagit, mais comme nous ne savons pas combien de boutons il nous faut, nous devons simplement les déclarer en premier. Par conséquent, immédiatement après la ligne de création du cadre, déclarez les boutons: grille JButton [] []: deux paires de crochets signifient que les occurrences de JButton sur la grille seront contenues dans un format à deux dimensions. S'il y avait une paire de crochets, cela signifierait une simple ligne de boutons JButton, qui fonctionne également. Mais il est beaucoup plus facile de se référer au bouton créé ou d’interagir avec le bouton s’ils sont déclarés comme un tableau à deux dimensions.

    1. Nous avons annoncé les boutons JButton, mais n’indiquions pas combien. Dans le constructeur, vous devez ajouter une ligne de code définissant ce nombre: gr>
    2. Maintenant, il est déterminé qu'il y aura un certain nombre de boutons, et chacun d'entre eux doit être créé. Le moyen le plus simple consiste à utiliser une double boucle, l’une sur l’axe x et l’autre sur l’axe y. Dans cette double boucle, nous créons un nouveau bouton et, pour simplifier le lien suivant dans notre exemple, nous allons placer du texte à l'intérieur de chaque bouton pour savoir où se trouvent chacun des boutons du tableau à deux dimensions. Pour créer un bouton dans la boucle, nous devons écrire gr),

      Pirate n ° 183. Malware pour Android

      AWT était la première tentative de Sun pour créer une interface graphique pour Java. Ils se sont servis facilement et ont simplement créé une couche en Java qui appelait des méthodes à partir de bibliothèques écrites en C. Les méthodes de bibliothèque créaient et utilisaient des composants graphiques de l'environnement d'exploitation. D’un côté, c’est bien, puisqu'un programme Java ressemble à d’autres programmes de ce système d’exploitation. Toutefois, rien ne garantit que les différences de taille de composant et de police ne gâcheront pas l’apparence du programme lorsqu’il sera exécuté sur une autre plate-forme. En outre, afin de fournir plusieurs plates-formes, il était nécessaire d’unifier les interfaces d’appel des composants, ce qui a rendu leur fonctionnalité un peu tronquée. Et l'ensemble des composants s'est avéré être assez petit. Par exemple, AWT n'a pas de tables et les boutons ne prennent pas en charge l'affichage des icônes.

      Ressources utilisées qu'AWT tente de libérer automatiquement. Cela complique un peu l'architecture et affecte les performances. Maîtriser AWT est assez simple, mais écrire quelque chose de compliqué sera un peu difficile. Maintenant, il est utilisé sauf pour les applets.

      Avantages:

      • une partie du JDK,
      • vitesse de travail
      • Les composants graphiques sont similaires aux composants standard.

      Inconvénients:

      • l'utilisation de composants natifs impose des restrictions à l'utilisation de leurs propriétés. Certains composants peuvent ne pas fonctionner du tout sur des plates-formes non natives,
      • certaines fonctionnalités, telles que les icônes et les info-bulles, ne sont pas du tout disponibles dans AWT,
      • il y a très peu de composants AWT standard, un programmeur doit implémenter beaucoup de composants personnalisés,
      • le programme est différent sur différentes plateformes (peut être tordu).

      conclusion:

      Actuellement, AWT est utilisé très rarement - principalement dans les anciens projets et applets. Oracle a rangé la formation et encourage le passage à Swing. Il est compréhensible que l’accès direct aux composants de l’axe puisse devenir une grave faille de sécurité.

      À quoi ressemble Swing?

      Après AWT, Sun a développé un ensemble de composants graphiques appelé Swing. Les composants Swing sont entièrement écrits en Java. La 2D est utilisée pour le rendu, ce qui a apporté plusieurs avantages à la fois. L'ensemble de composants standard dépasse de loin AWT en termes de variété et de fonctionnalité. Il est devenu facile de créer de nouveaux composants, en héritant des composants existants et en dessinant tout ce que votre coeur désire. La prise en charge de différents styles et skins est devenue possible. Cependant, la vitesse des premières versions de Swing laissait beaucoup à désirer. Un programme mal écrit pourrait bloquer complètement Windows.

      Cependant, en raison de sa facilité d’utilisation, de la richesse de sa documentation et de la souplesse de ses composants, Swing est devenu le framework graphique le plus populaire en Java. De nombreuses extensions sont apparues sur ses bases, telles que SwingX, JGoodies, ce qui simplifie grandement la création d'interfaces utilisateur complexes. Presque tous les environnements de programmation Java populaires incluent des éditeurs graphiques pour les formulaires Swing. Par conséquent, comprendre et commencer à utiliser Swing n’est pas difficile.

      Avantages:

      • JDK, pas besoin d’installer des bibliothèques supplémentaires,
      • Swing a beaucoup plus de livres et de réponses sur les forums. Tous les problèmes, en particulier pour les débutants, sont parfaitement connus de Google.
      • éditeur de formulaire intégré dans presque tous les environnements de développement,
      • basé sur le swing, il existe de nombreuses extensions comme SwingX,
      • soutien pour différents styles (look and feel).

      Inconvénients:

      • une fenêtre avec de nombreux composants commence à ralentir,
      • Travailler avec des gestionnaires de disposition peut être un véritable cauchemar dans les interfaces complexes.

      Conclusion:

      Swing a vécu, Swing vivant, Swing vivra. Bien qu'Oracle tente de promouvoir JavaFX, Swing est de loin le framework d'interface utilisateur Java le plus populaire.

      SWT: widget météo

      Pour illustrer les capacités des bibliothèques graphiques les plus populaires et les principes de base permettant de les utiliser, nous allons créer plusieurs petits widgets affichant diverses informations.

      Et commençons, peut-être, avec le widget le plus populaire - l'affichage de la météo actuelle, pour la mise en œuvre de laquelle nous avons choisi SWT.

      Tout programme SWT commence par la création d'un objet d'affichage. Il sert de type de contexte d'application, qui contient les méthodes nécessaires pour accéder aux ressources système et fournit une boucle d'événement. L'étape suivante consiste à créer un objet Shell d'égale importance. Shell est une fenêtre de système d'exploitation normale. L'affichage est transmis au constructeur du shell pour créer une fenêtre de niveau supérieur.

      Étant donné que nous créons un widget, il n'est pas nécessaire d'afficher la bordure standard de la fenêtre ni les boutons de commande; pour cela, nous avons spécifié l'indicateur NO_TRIM. Pour l’arrière-plan, nous allons utiliser l’image - un rectangle arrondi. En principe, une fenêtre SWT peut prendre n'importe quelle forme. Pour atteindre cet effet, nous utilisons la classe Region. Il suffit d’ajouter à cette classe tous les points visibles de l’image d’arrière-plan, en ignorant ceux qui sont transparents.

      Dans les images de formats différents, la transparence est définie différemment. Par conséquent, les informations relatives aux zones transparentes ne sont pas extraites de la même manière. Créez une zone d’arrière-plan et ajoutez-y tous les points visibles:

      Définir la forme de la fenêtre:

      Vous devez maintenant créer un écouteur d'événements pour la fenêtre. Nous serons intéressés par les événements de dessin de fenêtre, les événements de souris et les frappes au clavier afin que la fenêtre puisse être déplacée sur l’écran.

      Donc, en appuyant sur la touche Echap, la fenêtre se ferme. Lorsque vous cliquez avec le bouton gauche de la souris sur la zone de la fenêtre, rappelez-vous les coordonnées du clic. Lorsque la souris bouge en maintenant le bouton gauche enfoncé, nous déplaçons la fenêtre à l'écran en fonction du mouvement. Lors d'un événement de redessinage, nous dessinons une image d'arrière-plan à l'aide du contexte graphique GC.

      Affectez le programme d'écoute aux événements de fenêtre correspondants:

      Définissez la taille de la fenêtre sur la taille de l'image:

      Ouvrez la fenêtre et démarrez la boucle d'événements:

      N'oubliez pas de libérer les ressources utilisées à la fin:

      En lançant le programme à ce stade, nous obtenons un rectangle qui peut être déplacé avec la souris et fermé par Esc.

      Il est temps d'ajouter du contenu. Nous afficherons la météo actuelle sous la forme d'une icône de statut (soleil, pluie, neige ...), des relevés de température et de l'heure de la dernière mise à jour.

      Les gestionnaires de disposition permettent de positionner des composants graphiques dans une fenêtre sous la forme requise. Le gestionnaire de disposition s'occupe non seulement de la disposition des composants, mais également de leur redimensionnement lors du redimensionnement d'une fenêtre. Pour notre widget, nous allons utiliser GridLayout. Ce gestionnaire organise les composants dans les cellules d'une table imaginaire. Créez un GridBagLayout pour deux colonnes de largeur différente (indicateur false dans le constructeur), définissez-le comme un gestionnaire de disposition de fenêtre:

      Pour l’image de statut, nous utilisons le composant Label. Nous passons l'objet window en tant que parent. Le deuxième paramètre, vous pouvez définir le style du composant. Pour chaque composant, l'ensemble des indicateurs de style possibles est différent, vous pouvez les voir dans la documentation ou directement dans la source du composant.

      Les indicateurs de la classe GridData signifient que l'étiquette sera située en haut à gauche, qu'elle sera étirée horizontalement et verticalement (les indicateurs sont définis sur true) s'il y a de l'espace disponible et occupera une ligne et une colonne du tableau de présentation.

      Il n’ya pas d’arrière-plan transparent des composants dans SWT, et un arrière-plan blanc s’affiche derrière l’image de statut, ce qui, bien sûr, ne serait pas souhaitable. Par conséquent, créez un objet Color avec la couleur d’arrière-plan de la fenêtre:

      À la fin du programme, cet objet doit également être effacé en appelant la méthode dispose. Définissez la couleur d'arrière-plan et l'image de statut, qui peuvent être téléchargées à partir du fichier de la même manière que nous avons téléchargé l'image d'arrière-plan au début:

      Ajoutez maintenant une étiquette avec la température actuelle et placez-la dans la partie supérieure droite de la fenêtre:

      Réglez la température:

      Pour enregistrer la température en degrés Celsius, le numéro unicode du symbole correspondant avec les caractères de service u est utilisé.

      La police par défaut pour les étiquettes de texte est trop petite. Alors créez un nouveau plus grand:

      FontData [] fD = temperatureLabel.getFont (). GetFontData (), fD.setHeight (30), fD.setStyle (SWT.BOLD), Police newFont = nouvelle police (display, fD), temperatureLabel.setFont (newFont), Police , comme d’autres objets ressources, vous devez libérer. Pour ce faire, utilisez l'écouteur d'événements de destruction d'étiquettes:

      Enfin, ajoutez une étiquette avec une description des conditions météorologiques:

      Le texte peut être assez long. Par conséquent, lors de la création d'une étiquette, spécifiez l'indicateur WRAP afin que le texte se scinde automatiquement en plusieurs lignes lorsqu'il n'y a pas assez d'espace. Centrez le composant et laissez-le remplir tout l'espace horizontal. Nous indiquons également que le composant occupe deux colonnes du tableau de présentation. Nous lançons et obtenons une fenêtre de l’image Weather Widget.

      Widget météo

      Maintenant, vous pouvez fixer un service météo, créer une minuterie pour la mise à jour automatique - et le widget est prêt.

      Swing, AWT et SWT

      29 janvier 2012 à 21h44

      Il y a un extrait de code:

      aider à mettre en place le curseur sur la cellule.
      exemple:

      29 janvier 2012 21:54

      Il y a un extrait de code:

      aider à mettre en place le curseur sur la cellule.
      exemple:

      Héritez votre classe de la classe Component et commencez à lire à propos de Mouse [Motion] Listener:

      29 janvier 2012, 22h44

      Désolé, de l'anglais. pas vraiment avec moi.
      D'après ce que j'ai compris, l'a fait, pour une raison quelconque, cela ne fonctionne pas = (

      quelque part sur le bord supérieur de la fenêtre cela fonctionne, ce n'est pas clair.

      29 janvier 2012 22:54

      Désolé, de l'anglais. pas vraiment avec moi.
      D'après ce que j'ai compris, l'a fait, pour une raison quelconque, cela ne fonctionne pas = (

      quelque part sur le bord supérieur de la fenêtre cela fonctionne, ce n'est pas clair.

      29 janvier 2012 23:32

      Je m'excuse pour l'immunité.

      En fait, qu'est-ce que j'essaie de faire:
      1. Créez une grille.
      2. Lorsque vous cliquez sur l'une des cellules, changez sa couleur.

      Voici ce que j'ai

      Pourriez-vous signaler les défauts?

      Jusqu’à présent, j’écrivais dans "actionscript" car cela n’est pas toujours clair.
      Désolé encore et merci pour l'aide.

      30 janvier 2012 07:19

      Essayez JTable ou GridLayout.
      Il est également probablement préférable de placer un écouteur et un gestionnaire dans le composant parent, qui recevra l'objet cellule par les coordonnées du clic et en modifiera la couleur.

      30 janvier 2012 08:19

      Merci, je l’ai fait (en examinant plusieurs vidéos de YouTube).
      Voici le résultat:

      Mais alors un nouveau problème est né = (

      Si je crée un JFrame avec une taille (par exemple) de 700x500px, il se trouve qu’à la droite du maillage créé, il existe une largeur d’indentation de 200px, c.-à-d. zone libre et non utilisée.
      La question qui se pose est la suivante: - Pourquoi les récepteurs de souris continuent-ils de répondre si le curseur de la souris se trouve en dehors de la grille?
      Je veux juste comprendre comment fonctionne JPanel et s’il faut ou non l’utiliser.

      Un autre moment incompréhensible:
      Il existe un JFrame 500x500px. J'y ajoute le 2ème "JPanel" - et.
      Il est logique que l’un d’eux se place sous l’autre, mais voici comment déplacer et définir la largeur.
      Je ne trouve pas la réponse, c.-à-d. J'ai vu des exemples, mais tout autour de moi a un problème avec les mains.

      Merci encore pour votre aide.

      30 janvier 2012 10h07

      Si je crée un JFrame avec une taille (par exemple) de 700x500px, il se trouve qu’à la droite du maillage créé, il existe une largeur d’indentation de 200px, c.-à-d. zone libre et non utilisée.
      La question qui se pose est la suivante: - Pourquoi les récepteurs de souris continuent-ils de répondre si le curseur de la souris se trouve en dehors de la grille?
      Je veux juste comprendre comment fonctionne JPanel et s’il faut ou non l’utiliser.

      Un autre moment incompréhensible:
      Il existe un JFrame 500x500px. J'y ajoute le 2ème "JPanel" - et.
      Il est logique que l’un d’eux se place sous l’autre, mais voici comment déplacer et définir la largeur.
      Je ne trouve pas la réponse, c.-à-d. J'ai vu des exemples, mais tout autour de moi a un problème avec les mains.

      Regarde la vidéo: Java avec eclipse - video12 - Application graphique avec swing (Janvier 2022).

      Pin
      Send
      Share
      Send
      Send