Maison Java javaDidacticiel Explication de la programmation GUI en Java (Partie 2)

Explication de la programmation GUI en Java (Partie 2)

Jul 23, 2017 pm 01:47 PM
java 基础 编程

1. Mécanisme de surveillance des événements

-- Source de l'événement : les composants de l'interface graphique dans le package awt ou swing, c'est-à-dire le composant où l'événement se produit

--Événement:Event Une opération effectuée par l'utilisateur sur le composant

-- Listener: Listener La méthode responsable du traitement de l'événement

2. Classes sous java.awt Package .event

WindowEvent //Événements de fenêtre, tels que l'utilisateur clique sur une fenêtre à moitié fermée, la fenêtre obtient ou perd le focus, maximise ou minimise, etc.

MouseEvent //Événements de la souris, souris enfoncée, souris relâchée, clic (Appuyez et relâchez) etc.

ActionEvent //Événement d'action, il ne représente pas une action spécifique, mais une sémantique, comme un bouton ou un menu étant cliqué en appuyant sur Entrée dans la zone de texte Etc., cela peut être compris de cette façon : une certaine action de l'utilisateur provoque l'exécution de la fonction de base d'un certain composant. Il s'agit de l'événement ActionEvent

Différents types d'événements correspondent. aux différentes interfaces d'écoute d'événements et aux noms des interfaces. Correspond au nom de l'événement.

WindowEvent - >WindowListener

MouseEvent ->MouseListener

ActionEvent ->ActionListener

Exemple de code :

import java.awt.Frame;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;public class Test20 {public static void main(String[] args) {
        Frame f = new Frame();
        f.setSize(400, 400);
        f.setVisible(true);

        f.addWindowListener(new WindowListener() {

            @Overridepublic void windowOpened(WindowEvent e) { // 窗口被打开// TODO Auto-generated method stub}

            @Overridepublic void windowClosing(WindowEvent e) { // 设置关闭事件// TODO Auto-generated method stubSystem.exit(0);
            }

            @Overridepublic void windowClosed(WindowEvent e) { // 用户已经关闭窗口// TODO Auto-generated method stub}

            @Overridepublic void windowIconified(WindowEvent e) { // 被最小化的时候// TODO Auto-generated method stub}

            @Overridepublic void windowDeiconified(WindowEvent e) { // 最小化被还原的时候// TODO Auto-generated method stub}

            @Overridepublic void windowActivated(WindowEvent e) { // 窗体被激活// TODO Auto-generated method stub}

            @Overridepublic void windowDeactivated(WindowEvent e) { // 失去焦点的时候// TODO Auto-generated method stub}

        });
    }
}
Copier après la connexion

Avez-vous remarqué que lors de l'utilisation de l'interface WindowListener, de nombreux codes inhabituels seront introduits (ici, nous voulons juste le désactiver), et les méthodes dans l'excuse ne peuvent qu'être écrasées et ne peuvent pas être supprimées. , donc l'ensemble du projet semble très long. Afin de résoudre ce problème, il existe un adaptateur d'événement.

3. Adaptateur d'événement

JDK définit les classes d'implémentation correspondantes pour la plupart des classes d'interface d'écouteur d'événements (il contient de nombreuses méthodes d'implémentation vides pour nous faciliter la création d'un objet d'écoute de détection ), que nous appelons la classe d’adaptateur d’événements. Ici, j'ai utilisé WindowAdapter.

import java.awt.Frame;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class Test21 {public static void main(String[] args) {
        Frame f = new Frame("事件适配器的栗子");
        f.setSize(400, 400);
        f.setVisible(true);

        f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}
Copier après la connexion

Vous pouvez observer le code source de la classe WindowAdapter et en avoir une idée.

public abstract class WindowAdapterimplements WindowListener, WindowStateListener, WindowFocusListener
{/** * Invoked when a window has been opened.     */public void windowOpened(WindowEvent e) {}/** * Invoked when a window is in the process of being closed.
     * The close operation can be overridden at this point.     */public void windowClosing(WindowEvent e) {}/** * Invoked when a window has been closed.     */public void windowClosed(WindowEvent e) {}/** * Invoked when a window is iconified.     */public void windowIconified(WindowEvent e) {}/** * Invoked when a window is de-iconified.     */public void windowDeiconified(WindowEvent e) {}/** * Invoked when a window is activated.     */public void windowActivated(WindowEvent e) {}/** * Invoked when a window is de-activated.     */public void windowDeactivated(WindowEvent e) {}/** * Invoked when a window state is changed.
     * @since 1.4     */public void windowStateChanged(WindowEvent e) {}/** * Invoked when the Window is set to be the focused Window, which means
     * that the Window, or one of its subcomponents, will receive keyboard
     * events.
     *
     * @since 1.4     */public void windowGainedFocus(WindowEvent e) {}/** * Invoked when the Window is no longer the focused Window, which means
     * that keyboard events will no longer be delivered to the Window or any of
     * its subcomponents.
     *
     * @since 1.4     */public void windowLostFocus(WindowEvent e) {}
}
Copier après la connexion

Pratiquons quelques exemples de gestionnaires d'événements.

Exemple 1 :

import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;//例一:在窗体中放置一个按纽,点击后让程序退出class TestFrame implements ActionListener { // ActionListener接口里面只有一个方法,下面会重写private Frame f;public TestFrame() {
        f = new Frame("窗口");
        init();
    }private void init() {
        f.setSize(300, 300);
        f.setLayout(new FlowLayout());// 布局模式Button b = new Button("退出程序");
        b.addActionListener(this);
        f.add(b);
        f.setVisible(true);

    }

    @Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubf.setVisible(false);
        f.dispose();// 在关闭的时候,可以用它来销毁窗体资源System.exit(0);// 退出    }

}public class Test22 {public static void main(String[] args) {new TestFrame();
    }

}
Copier après la connexion

Ci-dessus, cliquez sur le bouton Quitter le programme pour quitter, cliquez sur le X en haut à droite coin, il n'est pas possible de sortir. Parce que WindowListener n'est pas défini.

Cet exemple utilise l'interface ActionListener. Vous pouvez consulter son code source, comme suit :

public interface ActionListener extends EventListener {/** * Invoked when an action occurs.     */public void actionPerformed(ActionEvent e);

}
Copier après la connexion

Exemple 2 :

  TextField txtNo;=  Frame("请输入密码"f.setBounds(50, 50, 400, 400);f.setLayout( FlowLayout());=  TextField(10);  code = (!(code >= KeyEvent.VK_0 && code <= KeyEvent.VK_9)) {System.out.println(KeyEvent.getKeyText(code) + "输入有误" 0
Copier après la connexion

Classe de test :

public class Test23 {public static void main(String[] args) {new TestFrame();
    }
}
Copier après la connexion

Exemple 3 :

Liste du contenu du répertoire spécifié :

import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.TextArea;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.File;public class Test24 {public static void main(String[] args) {new MyWindow();
    }
}class MyWindow {
    MyWindow() {
        init();
    }private Frame f;private Button b;private TextField txtDir;// 用来输入目录名称private TextArea txtFileList;// 用来显示文件列表private void init() {
        f = new Frame("窗口");
        f.setBounds(44, 44, 500, 500);
        f.setLayout(new FlowLayout());

        txtDir = new TextField(8);
        b = new Button("显示");
        txtFileList = new TextArea(20, 30);// 用来显示文件列表的区域f.add(txtDir);
        f.add(b);
        f.add(txtFileList);
        initEvent();
        f.setVisible(true);
    }private void initEvent() {// TODO Auto-generated method stubf.addWindowListener(new WindowAdapter() {/** * Invoked when a window is in the process of being closed. The
             * close operation can be overridden at this point.             */public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        b.addActionListener(new ActionListener() {/** * Invoked when an action occurs.             */public void actionPerformed(ActionEvent e) {
                txtFileList.setText("");
                String dirStr = txtDir.getText();// 取出用户输入的路径File file = new File(dirStr);if (file.isDirectory() && file.exists()) {
                    String[] fileNameList = file.list();for (String s : fileNameList) {
                        txtFileList.append(s + "\r\n");// 别忘了换行符                    }
                } else {
                    txtFileList.append("输入有误,请重新输入");
                }
            }
        });

    }
}
Copier après la connexion

Résultat : (je lui ai demandé d'afficher le répertoire de mon lecteur D)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La clé du codage : libérer la puissance de Python pour les débutants La clé du codage : libérer la puissance de Python pour les débutants Oct 11, 2024 pm 12:17 PM

Python est un langage d'introduction à la programmation idéal pour les débutants grâce à sa facilité d'apprentissage et ses fonctionnalités puissantes. Ses bases incluent : Variables : utilisées pour stocker des données (nombres, chaînes, listes, etc.). Type de données : Définit le type de données dans la variable (entier, virgule flottante, etc.). Opérateurs : utilisés pour les opérations mathématiques et les comparaisons. Flux de contrôle : contrôlez le flux d'exécution du code (instructions conditionnelles, boucles).

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Résolution de problèmes avec Python : débloquez des solutions puissantes en tant que codeur débutant Résolution de problèmes avec Python : débloquez des solutions puissantes en tant que codeur débutant Oct 11, 2024 pm 08:58 PM

Python permet aux débutants de résoudre des problèmes. Sa syntaxe conviviale, sa bibliothèque complète et ses fonctionnalités telles que les variables, les instructions conditionnelles et les boucles permettent un développement de code efficace. De la gestion des données au contrôle du flux du programme et à l'exécution de tâches répétitives, Python fournit

Démystifier C : un chemin clair et simple pour les nouveaux programmeurs Démystifier C : un chemin clair et simple pour les nouveaux programmeurs Oct 11, 2024 pm 10:47 PM

C est un choix idéal pour les débutants qui souhaitent apprendre la programmation système. Il contient les composants suivants : fichiers d'en-tête, fonctions et fonctions principales. Un simple programme C capable d'imprimer "HelloWorld" a besoin d'un fichier d'en-tête contenant la déclaration de fonction d'entrée/sortie standard et utilise la fonction printf dans la fonction principale pour imprimer. Les programmes C peuvent être compilés et exécutés à l'aide du compilateur GCC. Après avoir maîtrisé les bases, vous pouvez passer à des sujets tels que les types de données, les fonctions, les tableaux et la gestion des fichiers pour devenir un programmeur C compétent.

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

Créer l'avenir : programmation Java pour les débutants absolus Créer l'avenir : programmation Java pour les débutants absolus Oct 13, 2024 pm 01:32 PM

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.

Java Made Simple : un guide du débutant sur la puissance de programmation Java Made Simple : un guide du débutant sur la puissance de programmation Oct 11, 2024 pm 06:30 PM

Java Made Simple : Guide du débutant sur la puissance de programmation Introduction Java est un langage de programmation puissant utilisé dans tout, des applications mobiles aux systèmes d'entreprise. Pour les débutants, la syntaxe de Java est simple et facile à comprendre, ce qui en fait un choix idéal pour apprendre la programmation. Syntaxe de base Java utilise un paradigme de programmation orienté objet basé sur les classes. Les classes sont des modèles qui organisent ensemble les données et les comportements associés. Voici un exemple simple de classe Java : publicclassPerson{privateStringname;privateintage;

Libérez votre programmeur intérieur : C pour les débutants absolus Libérez votre programmeur intérieur : C pour les débutants absolus Oct 11, 2024 pm 03:50 PM

C est un langage idéal pour les débutants qui souhaitent apprendre la programmation, et ses avantages incluent l'efficacité, la polyvalence et la portabilité. L'apprentissage du langage C nécessite : Installer un compilateur C (tel que MinGW ou Cygwin) Comprendre les variables, les types de données, les instructions conditionnelles et les instructions de boucle Ecrire le premier programme contenant la fonction principale et la fonction printf() S'entraîner à travers des cas pratiques (comme le calcul de moyennes) Connaissance du langage C

See all articles