[Java Swing] Transition d'écran par CardLayout

Je veux créer une interface graphique qui vous permette de changer d'écran avec un bouton! !!

En juillet 2020, je recherchais un logiciel en cours de développement utilisant Java Swing pour avoir une fonction qui transite l'écran (change l'écran) lorsqu'un bouton est enfoncé comme un site Web, mais en utilisant une fonction appelée CardLayout, l'écran est affiché. Il semble que la transition soit possible, alors je voudrais la résumer.

environnement


Définir JFrame

Tout d'abord, définissez le JFrame de base.

PanelChangeTest.java


import javax.swing.*;

public class PanelChangeTest extends JFrame{

    public static void main(String[] args) {
        PanelChangeTest frame = new PanelChangeTest();
        frame.setTitle("Test de transition d'écran");
        frame.setSize(900, 600);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

Je vais essayer.

javac PanelChangeTest.java && java PanelChange

PanelChangeTest001.png

J'ai pu l'exécuter en toute sécurité.


Ajouter des boutons pour les panneaux et les transitions d'écran

Ajoutez ensuite un panneau. La procédure est la suivante

--Définissez trois panneaux (panel01, panel02, panel03) pour la transition d'écran. --Définissez et stockez le panneau parent (cardPanel) qui stocke les trois panneaux. --Définissez un bouton pour la transition d'écran.

PanelChangeTest.java


import java.awt.*;
import javax.swing.*;

public class PanelChangeTest extends JFrame{

    JPanel cardPanel;
    CardLayout layout;

    public static void main(String[] args) {
        PanelChangeTest frame = new PanelChangeTest();
        frame.setTitle("Test de transition d'écran");
        frame.setSize(900, 600);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public PanelChangeTest() {
        
        // panel01
        JPanel panel01 = new JPanel();
        JButton btn01 = new JButton("panel01");
        panel01.add(btn01);

        // panel02
        JPanel panel02 = new JPanel();
        panel02.setBackground(Color.DARK_GRAY);
        JButton btn02 = new JButton("panel02");
        panel02.add(btn02);

        // panel03
        JPanel panel03 = new JPanel();
        panel03.setBackground(Color.LIGHT_GRAY);
        JButton btn03 = new JButton("panel03");
        panel03.add(btn03);

        //Panneau pour la disposition des cartes
        cardPanel = new JPanel();
        layout = new CardLayout();
        cardPanel.setLayout(layout);

        cardPanel.add(panel01, "panel01");
        cardPanel.add(panel02, "panel02");
        cardPanel.add(panel03, "panel03");

        //Bouton de déplacement de la carte
        JButton firstButton = new JButton("panel01");
        JButton secondButton = new JButton("panel02");
        JButton thirdButton = new JButton("panel03");

        JPanel btnPanel = new JPanel();
        btnPanel.add(firstButton);
        btnPanel.add(secondButton);
        btnPanel.add(thirdButton);

        //Placez le cardPanel et le bouton de déplacement de la carte dans JFrame
        Container contentPane = getContentPane();
        contentPane.add(cardPanel, BorderLayout.CENTER);
        contentPane.add(btnPanel, BorderLayout.PAGE_END);
    }
}

Je vais essayer.

javac PanelChangeTest.java && java PanelChange

PanelChangeTest002.png

Le panneau et le bouton ajoutés s'affichent. Cependant, à ce stade, vous ne pouvez pas changer d'écran en appuyant sur le bouton en bas de l'écran.


Implémentation de la fonction de transition d'écran

Ajoutez une fonction de transition d'écran pour que l'écran puisse être changé en appuyant sur le bouton en bas de l'écran.

PanelChangeTest.java


import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class PanelChangeTest extends JFrame implements ActionListener{

    JPanel cardPanel;
    CardLayout layout;

    public static void main(String[] args) {
        PanelChangeTest frame = new PanelChangeTest();
        frame.setTitle("Test de transition d'écran");
        frame.setSize(900, 600);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public PanelChangeTest() {
        
        // panel01
        JPanel panel01 = new JPanel();
        JButton btn01 = new JButton("panel01");
        panel01.add(btn01);

        // panel02
        JPanel panel02 = new JPanel();
        panel02.setBackground(Color.DARK_GRAY);
        JButton btn02 = new JButton("panel02");
        panel02.add(btn02);

        // panel03
        JPanel panel03 = new JPanel();
        panel03.setBackground(Color.LIGHT_GRAY);
        JButton btn03 = new JButton("panel03");
        panel03.add(btn03);

        //Panneau pour la disposition des cartes
        cardPanel = new JPanel();
        layout = new CardLayout();
        cardPanel.setLayout(layout);

        cardPanel.add(panel01, "panel01");
        cardPanel.add(panel02, "panel02");
        cardPanel.add(panel03, "panel03");

        //Bouton de déplacement de la carte
        JButton firstButton = new JButton("panel01");
        firstButton.addActionListener(this);
        firstButton.setActionCommand("panel01");

        JButton secondButton = new JButton("panel02");
        secondButton.addActionListener(this);
        secondButton.setActionCommand("panel02");

        JButton thirdButton = new JButton("panel03");
        thirdButton.addActionListener(this);
        thirdButton.setActionCommand("panel03");

        JPanel btnPanel = new JPanel();
        btnPanel.add(firstButton);
        btnPanel.add(secondButton);
        btnPanel.add(thirdButton);
     
        //Placez le cardPanel et le bouton de déplacement de la carte dans JFrame
        Container contentPane = getContentPane();
        contentPane.add(cardPanel, BorderLayout.CENTER);
        contentPane.add(btnPanel, BorderLayout.PAGE_END);
    }

    public void actionPerformed(ActionEvent e) {
        String cmd = e.getActionCommand();

        layout.show(cardPanel, cmd);
    }
}

Je vais essayer.

javac PanelChangeTest.java && java PanelChange

PanelChangeTest003.png

Le même écran que précédemment était affiché. Cliquez sur le bouton "panel02" en bas de l'écran.

PanelChangeTest004.png

Commuté sur panel02. De même, cliquez sur "panneau 03".

PanelChangeTest005.png

Basculé vers panel03. Le bouton en haut de l'écran sert à afficher le nom du panneau, ce code n'a donc pas de fonction de bouton.


Résumé

Cette fois, j'ai testé la transition d'écran de l'interface graphique avec Java Swing.

C'était juste un test, donc c'était aussi simple que 3 méthodes dans un seul fichier. Être pratique

--Séparez les panneaux d'affichage. --Faites un bouton pour la transition de l'écran vers une méthode

J'ai senti qu'il était nécessaire de configurer des méthodes de classe hautement personnalisables tout en conservant la lisibilité.


Site de référence

Programmons: utilisons Swing

Recommended Posts

[Java Swing] Transition d'écran par CardLayout
Transition d'écran avec swing, java
[Android Studio] Transition d'écran par le bouton [Java]
Méthode de transition d'écran
Transition d'écran JavaFX8
Java Swing, SWT, JavaFX
Développement Android ~ transition d'écran (intention) ~
Résumé orienté objet par les débutants (Java)
Transition d'écran Mémorandum de transfert d'informations
Paramètres d'animation au moment de la transition d'écran